[英]Angular $broadcast not working.
我試圖在$ scope和$ scope。$ broadcast的兩個控制器之間共享信息。
這是觀點:
<div ng-controller="ParentCtrl">
<div ng-controller="ChildCtrl">
{{content}}
</div>
</div>
和控制器:
.controller('ParentCtrl', ['$scope', function($scope) {
$scope.$broadcast('someEvent', 'bidule');
}])
.controller('ChildCtrl', ['$scope', function($scope) {
$scope.$on('someEvent', function(event, b) {
$scope.content = b;
});
}])
和掠奪者
我在這做錯了什么?
子控制器尚未實例化。 在timeout
包裝broadcast
的工作原理如下: http : //plnkr.co/edit/MF7P16K1OTv46JNgkkih?p = preview
$timeout(function(){
$scope.$broadcast('someEvent', 'bidule');
});
孩子沒有發起。 面對同樣的問題,這是我的解決方案。
.controller('ParentCtrl', ['$scope', function($scope) {
$scope.$on('initiateEvent', function(event, b) {
$scope.$broadcast('someEvent', 'bidule');
}
}])
.controller('ChildCtrl', ['$scope', function($scope) {
$scope.$on('someEvent', function(event, b) {
$scope.content = b;
});
$scope.$emit('initiateEvent', null);
}])
在這里,我正在啟動孩子並要求家長播放一些someEvent
要播放一個事件,您只需要調用它即可。
以下代碼完美運行:
你的觀點:
<div ng-controller="ParentCtrl" ng-click="myFunc()">
<div ng-controller="ChildCtrl">
{{content}}
</div>
</div>
和你的控制器:
.controller('ParentCtrl', ['$scope', function($scope) {
$scope.myFunc = function() {
$scope.$broadcast('someEvent', 'bidule');
}
}])
.controller('ChildCtrl', ['$scope', function($scope) {
$scope.$on('someEvent', function(event, b) {
$scope.content = b;
});
}])
希望能幫助到你 !
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.