angular jsの別のコントローラーで関数を呼び出す必要があります。
コード:
app.controller('One', ['$scope',
function($scope) {
$scope.parentmethod = function() {
// task
}
}
]);
app.controller('two', ['$scope',
function($scope) {
$scope.childmethod = function() {
// Here i want to call parentmethod of One controller
}
}
]);
コントローラ間の通信は、$emit
+ $on
/$broadcast
+ $on
メソッドを通じて行われます。
そのため、コントローラー「2」内のコントローラー「1」のメソッドを呼び出したい場合、これを行う正しい方法は次のとおりです。
app.controller('One', ['$scope', '$rootScope'
function($scope) {
$rootScope.$on("CallParentMethod", function(){
$scope.parentmethod();
});
$scope.parentmethod = function() {
// task
}
}
]);
app.controller('two', ['$scope', '$rootScope'
function($scope) {
$scope.childmethod = function() {
$rootScope.$emit("CallParentMethod", {});
}
}
]);
$rootScope.$emit
が呼び出されている間、2番目のパラメーターとして任意のデータを送信できます。
あるコントローラーから別のコントローラーに関数を使用しません。より良い方法は、共通機能をサービスに移動してから、両方のコントローラーにサービスを注入することです。
two
コントローラーがnested in One
コントローラーの場合。
[。
$scope.parentmethod();
Angularは、現在のスコープからparentmethod
に到達するまでのrootScope
関数の検索になります。
イベントを使用してデータを提供できます。そのようなコード:
app.controller('One', ['$scope', function ($scope) {
$scope.parentmethod=function(){
$scope.$emit('one', res);// res - your data
}
}]);
app.controller('two', ['$scope', function ($scope) {
$scope.$on('updateMiniBasket', function (event, data) {
...
});
}]);