我有一個控制器,它有一個$ rootScope。$廣播,它更新了一個指令的內容。
第一個$ 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>'
}
});
我遇到的問題是,在頁面加載,標題$廣播並且在清除完成之前總計似乎正在被調用。
UPDATE:
Plunker:http://plnkr.co/edit/o7wEFyIGh0284ZAc9VnS?p=preview
每當在home.html的,該指令將隱藏 - 正確的。 無論何時在cart.html上,指令都會顯示 - 正確。
要看到問題,請單擊上車...點擊按鈕,計數器加一。然後回到家裏,然後再返回到車......計數器不會重置爲0
http://stackoverflow.com/questions/18130369/emit-broadcast-synchronous-or-asynchronous –
所以當你把console.log語句放在三個$上時,「清除」日誌是最後一個? –
@camden_kid - 請參閱附件更新的重要註釋和註釋 –