在我的页面上,我有一个网格,列出了Web服务返回的所有文章。用户可以转到单独的页面添加新文章,完成后,应将文章添加到另一页面的网格中。因此,当用户返回该页面时,将列出该文章。
我有一个服务来处理2个控制器之间的通信(一个用于网格,一个用于添加文章)。这个服务有一个AddArticleController调用的函数,它向我的GridController广播一条消息:
#include<iostream>
using namespace std;
gridController选择了这个:
function addNewArticle(articleNumber) {
$rootScope.$emit('newArticleAdded', {
articleNumber: articleNumber
});
}
问题在于,当已经多次显示带有网格的页面时,文章会多次添加到网格中。我假设这是因为每次创建一个新控制器,但旧控制器没有被销毁,所以广播被多次拾取。
如何解决此问题?显然,广播应该只处理一次。
答案 0 :(得分:0)
承认我是从无知的位置说出来的;让服务维护文章列表并让控制器观察到它会不容易?它将避免在示波器中来回发送消息并且只有一个事实来源。
答案 1 :(得分:0)
服务
myApp.service('myService',function($controller){
this.broadcastEvent = function(){
scope = $scope.$new();
$controller('mainCtrl',{
$scope:scope
});
scope.broadCastMethod();
}
});
控制器
myApp.controller('mainCtrl',function($scope){
$scope.broadCastMethod = function(){
$scope.$broadcast("callBraodcast");
}
})