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();
});
親コンテナを定義したままにします。
<div ng-include="'/path/template.html'" onload="childOnLoad()"></div>
親コントローラーで次を定義します。
$scope.childOnLoad() {
$scope.$broadcast("childOnLoad", data);
}
および子コントローラー内:
$scope.$on("childOnLoad", function (event, data) {
alert("Loaded!");
});
2回目の試行では、正しく実行しました。いくつかの関数を作成し、そのコントローラーのスコープはそれらの関数をプロパティとして取得し、次に$ scope.childOnLoad();を取得します。作成した関数を呼び出します。
実際、非常に多くの関数を定義できますが、ロード中またはロードの完了時に呼び出されません。