我在将事件从父范围广播到子范围时遇到问题,我认为根核心可能是子控制器未初始化。
假设我有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
由于子控制器可能稍后会初始化,因此 in 的范围无法捕获此事件。
有没有办法解决这个问题?
这里的代码:http: //plnkr.co/edit/HV6aco