包括: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

下一篇: Creating image from base64 string in NodeJS