【发布时间】:2014-11-05 20:49:20
【问题描述】:
我正在尝试使用 AngularJS 将事件发送到第二个控制器:
第一控制器:
$scope.checkThemeContent = function(theme) {
console.log("Trying to get cards for theme id: " +theme.id);
console.log(theme);
$scope.selectedTheme = theme;
if(theme.count_of_cards >0) {
//$scope.$emit('detailDisplayed', {});
$scope.displayedTemplate = 'detail';
$rootScope.$emit('detailDisplayed', {});
} else {
$scope.displayedTemplate = 'empty';
}
};
第二控制器:
$rootScope.$on('detailDisplayed', function(event, args) {
alert('Received');
$scope.initDataGrid();
});
但是没有触发事件。
我尝试反向使用作用域,它可以工作。
请问哪里有问题?
我遵循了这个教程:
http://toddmotto.com/all-about-angulars-emit-broadcast-on-publish-subscribing/
感谢您的帮助。
【问题讨论】:
-
事件是否在
$on处理程序附加之前发出? -
如果这是反向工作,也许你在定义监听器之前正在做一个发射编辑:与@someKittens 说的一样
-
如果您创建了一个 JSFiddle 或 Plunkr 示例将非常有帮助。
-
Durp,你在 rootScope 你不能发射更高
-
$emit-ing 沿着 $rootScope 是绝对可以的,并且在大多数情况下被认为比通过指令/组件向上或向下传播更快
标签: javascript angularjs emit