我有一项服务,用于处理需要它的控制器的消息广播。
服务:
.factory('mySharedService', function($rootScope) {
var sharedService = {};
sharedService.message = '';
sharedService.prepForBroadcast = function(msg) {
this.message = msg;
this.broadcastItem();
};
sharedService.broadcastItem = function() {
$rootScope.$broadcast('handleBroadcast');
};
return sharedService;
});
CNTL:
function AlertCtrl($scope, mySharedService) {
$scope.msgs = [];
$scope.$on('handleBroadcast', function() {
$scope.msgs.push(mySharedService.message);
});
$scope.closeAlert = function(index) {
$scope.msgs.splice(index, 1);
};
}
HTML:
<div ng-controller="AlertCtrl">
<alert ng-repeat="msg in msgs" type="msg.type" close="closeAlert($index)">{{msg.msg}}</alert>
</div>
所以我删除HTML片段的任何地方都会按预期显示消息,如果它在模态窗口中则除外。
我的问题是:如何在模态窗口中显示广播的消息?
答案 0 :(得分:0)
您可以将参数传递给$ broadcast方法,这样您就可以:
$rootScope.$broadcast('handleBroadcast', 'your message here');
并在你的听众中:
$scope.$on('handleBroadcast', function(ev, arg){
$scope.msgs.push(msg);
});
看看:http://docs.angularjs.org/api/ng。$ rootScope.Scope#methods_ $ broadcast
答案 1 :(得分:0)
主页面中有一个AlertCtrl
实例,每当模态打开时都会创建另一个实例(添加console.log来验证这一点)。模型内的AlertCtrl
实例化,并在广播事件后开始侦听。