如何从 AngularJS 中的另一个控制器调用函数?
How to call a function from another controller in AngularJS?
我需要在 AngularJS 中调用另一个控制器中的函数。我该怎么做?
代码:
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
}
}
]);
您可以使用事件来提供您的数据。这样的代码:
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
。
如果您想在子控制器中执行父控制器的 parentmethod 函数,请调用它:
$scope.$parent.parentmethod();
你可以试试here
控制器之间的通信是通过 $emit
+ $on
/ $broadcast
+ $on
方法完成的。
所以在你的情况下你想在 Controller "Two" 中调用 Controller "One" 的方法,正确的方法是:
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
时,您可以将任何数据作为第二个参数发送。
如果two
控制器嵌套在One
控制器中。
然后你可以简单地调用:
$scope.parentmethod();
Angular 将 search for parentmethod
函数从当前范围开始,直到到达 rootScope
.
我需要在 AngularJS 中调用另一个控制器中的函数。我该怎么做?
代码:
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
}
}
]);
您可以使用事件来提供您的数据。这样的代码:
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
。
如果您想在子控制器中执行父控制器的 parentmethod 函数,请调用它:
$scope.$parent.parentmethod();
你可以试试here
控制器之间的通信是通过 $emit
+ $on
/ $broadcast
+ $on
方法完成的。
所以在你的情况下你想在 Controller "Two" 中调用 Controller "One" 的方法,正确的方法是:
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
时,您可以将任何数据作为第二个参数发送。
如果two
控制器嵌套在One
控制器中。
然后你可以简单地调用:
$scope.parentmethod();
Angular 将 search for parentmethod
函数从当前范围开始,直到到达 rootScope
.