包括:onload调用在包含的控制器中定义的函数
使用AngularJS,是否可以使用“onload”参数来触发在“子”控制器(由所包含模板调用的控制器)内定义的函数?
例:
<!-- parent container -->
<div ng-include="'/path/template.html'" onload="childOnLoad()"></div>
<!-- template.html -->
<div ng-controller="childController">
<p ng-bind="txt"></p>
</div>
<!-- childController.js -->
app.controller('childController', function($scope) {
$scope.txt = "Test text";
$scope.childOnLoad = function() {
alert("Loaded!");
};
});
是否有意义? 或者我应该简单地调用childController中的函数,如下所示?
<!-- childController.js -->
app.controller('childController', function($scope) {
$scope.txt = "Test text";
$scope.childOnLoad = function() {
alert("Loaded!");
};
$scope.childOnLoad();
});
在你的第二次尝试中,你做的是正确的:你正在创建一些函数,该控制器的范围将这些函数作为属性,然后$ scope.childOnLoad(); 会调用你创建的函数。
事实上,你可以定义如此多的函数,但是在加载或加载完成时不会调用它们。
按照您定义的方式保留父容器:
<div ng-include="'/path/template.html'" onload="childOnLoad()"></div>
在父控制器中定义:
$scope.childOnLoad() {
$scope.$broadcast("childOnLoad", data);
}
并在儿童控制器中:
$scope.$on("childOnLoad", function (event, data) {
alert("Loaded!");
});
链接地址: http://www.djcxy.com/p/78389.html
上一篇: include: onload calling a function defined in included controller