Как вызвать функцию из другого контроллера в angularjs? [дубликат]



этот вопрос уже есть ответ здесь:



Мне нужно вызов функции в другом контроллере в 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
}
}
]);
1056   6  

6 ответов:

связь между контроллерами осуществляется через $emit + $on/$broadcast + $on методы.

поэтому в вашем случае вы хотите вызвать метод контроллера "один" внутри контроллера "два", правильный способ сделать это:

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 называется, вы можете отправить любые данные в качестве второго параметра.

Я бы не использовал функцию из одного контроллера в другой. Лучшим подходом было бы переместить общую функцию в службу, а затем внедрить службу в оба контроллера.

если

вы можете использовать события для предоставления ваших данных. Вот такой код:

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) {
                ...
         });             
    }]);

лучший подход для вас, чтобы общаться между двумя контроллерами, чтобы использовать события.

посмотреть scope документация

В этом проверить $on,$broadcast и $emit.

Если вы хотите выполнить функцию родительского контроллера родительский объект метод объекта внутри контроллера ребенка, называть его:

$scope.$parent.parentmethod();

вы можете попробовать его за здесь

Comments

    Ничего не найдено.