I am trying to pass some model data into a modal window when it is opened. When the user clicks on an element I want to have the modal window open and display more detailed
What worked for me was to create an object within resolve
that returns an object that holds the variables that I wanted to share.
resolve: {
shared: function(){
return {
name: 'Spencer',
numbers: [1, 2, 3]
}
}
}
To access the shared
object, include it when defining your modal instance controller.
app.controller('ModalInstanceController', function($scope, shared, $uibModalInstance,
I've made a plunker for you at http://plnkr.co/FzU5SOv3pdZmAPAIOzdo.
You want to resolve your data much like you do items currently.
$scope.open = function (size) {
var modalInstance = $modal.open({
templateUrl: 'myModalContent.html',
controller: 'ModalInstanceCtrl',
resolve: {
items: function () {
return $scope.items;
},
size: function() {
console.log('size: ', size);
return size;
}
}
});
and in your modal controller make sure to include the now resolved size object as follows:
angular.module('ui.bootstrap.demo').controller('ModalInstanceCtrl', function ($scope, $modalInstance, items, size) {
$scope.items = items;
$scope.selected = {
item: $scope.items[0]
};
$scope.size = size;
$scope.ok = function () {
$modalInstance.close($scope.selected.item);
};
$scope.cancel = function () {
$modalInstance.dismiss('cancel');
};
});
How about this?
I added the item to the resolve
resolve: {
items: function () {
return $scope.items;
},
item: function(){
return size;
}
}
And in the controller
I am doing: $scope.item = item;
after injecting the item