我有两个控制器,用于添加项目和删除项目,以及一个用于显示所有项目的模型。该模型被注入到控制器中(在同一模板上工作)。
每当添加一个项目时,我都会广播一条消息,模型会监听该消息并从服务器重新加载数据。
代码:
ItemModule.factory('ItemListModal', function ($resource, $rootScope){
var allItem = $resource('item/page/:pageId.json', {'pageId': pageId });
var items = allItem.query();
$rootScope.$on('ItemAdded',function(){
items = allItem.query();
});
return items;
});
//Item is another Model, used to send data on server.
function CreateItemCtrl($scope, $rootScope, Item) {
$scope.save = function() {
Item.save($scope.item, function(data) {
$scope.result = data;
$rootScope.$broadcast('ItemAdded');
}, function(data) {
$scope.result = data.data;
});
}
}
function ListItemCtrl($scope, ItemListModal) {
$scope.allItems = ItemListModal;
}
问题:现在,由于在首次加载模板时已经解决了对 ListItemCtrl 的依赖,因此在添加项目时它只会更改模型,但这不会重新注入到 ListItemCtrl 中。因此,模板上的列表不会改变。
有没有办法告诉 AngularJS 重新解决控制器的依赖关系?
我真的不想在控制器中监听事件并在那里重新查询数据,因为还有其他控制器也需要来自服务器的相同数据。