使用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();
});
答案 0 :(得分:2)
在你的第二次尝试中你做得对:你正在创建一些函数,该控制器的范围是将这些函数作为属性,然后是$ scope.childOnLoad();将调用您创建的函数。
实际上,您可以定义这么多函数,但在加载或加载完成时不会调用它们。
答案 1 :(得分:2)
将父容器保留为您定义它的方式:
<div ng-include="'/path/template.html'" onload="childOnLoad()"></div>
在父控制器中定义:
$scope.childOnLoad() {
$scope.$broadcast("childOnLoad", data);
}
并在子控制器中:
$scope.$on("childOnLoad", function (event, data) {
alert("Loaded!");
});