Как вызвать функцию из другого контроллера в angularjs? [дубликат]
этот вопрос уже есть ответ здесь:
может ли один контроллер AngularJS вызвать другой?
13 ответов
Как я могу ввести контроллер в другой контроллер в AngularJS
7 ответов
Мне нужно вызов функции в другом контроллере в 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
}
}
]);
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