我有一个控制器,它有许多 $rootScope.$broadcast 更新指令的内容。
第一个 $rootScope.$broadcast 正在清除所有内容/数据,而另一个则填充它。
app.controller('MyController', function($scope, header) {
$rootScope.$broadcast('clear');
$rootScope.$broadcast('title', header.title);
$rootScope.$broadcast('total', header.total);
});
注意:标头是从我的 $stateProvider 解析的,例如:
.state('index', {
url: '/index',
templateUrl: 'home.html',
controller: 'MyController',
resolve: {
header: function() {
return {
title : 'Welcome to Home',
total : 6
};
}
}
})
指示:
app.directive('myDirective', function() {
return {
restrict: 'A',
replace: true,
scope: {},
link: function(scope, element, attrs) {
scope.$on("clear", function(event, val) {
scope.Title = '';
scope.Total = 0;
});
scope.$on("title", function(event, title) {
scope.Title = title;
});
scope.$on("total", function(event, total) {
scope.Total = total;
});
},
template:
'<section>' +
'<p>{{Title}} - {{Total}}</p>' +
'</section>'
}
});
我遇到的问题是,在页面加载时,似乎在 clear 完成之前调用了 $broadcast 的 title 和 total 。
更新:
Plunker:http ://plnkr.co/edit/o7wEFyIGh0284ZAc9VnS?p=preview
无论何时在 home.html 上,该指令都会隐藏 - 正确。无论何时在 cart.html 上,该指令都会显示 - 正确。
要查看问题,请单击购物车...单击按钮以增加计数器。然后返回主页,然后返回购物车...计数器不会重置为 0