簡體   English   中英

Angular $廣播不起作用。

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM