親スコープから子スコープにイベントをブロードキャストする際に問題が発生しました。これは、ルート コアが子コントローラーである可能性があり、初期化されていません。
私が持っていると仮定しますhtml
:
<div ng-controller="ParentController">
<button type="button" ng-click="show()">Show Template</button>
<div ng-if="showTemplate">
<div ng-include="'template.html'" ng-controller="ChildController"></div>
</div>
</div>
およびコントローラー:
var myApp = angular.module("myApp", []);
myApp.controller('ParentController', ['$scope', function ($scope) {
$scope.show = function(){
$scope.showTemplate = true;
$scope.$broadcast("showEvent", 1);
};
}]);
myApp.controller('ChildController', ['$scope', function ($scope) {
$scope.$on("showEvent", function(event, id){
alert(id);
});
}]);
ボタンShow Template
をクリックすると、フラグshowTemplate
が設定されてテンプレートが表示され、イベントshowEvent
が子スコープにブロードキャストされます。
ただし、子コントローラーは後で初期化される可能性があるため、スコープはChildController
このイベントをキャッチできません。
これを回避する方法はありますか?
ここのコード: http://plnkr.co/edit/HV6aco