是否有可能在另一个控制器中调用一个控制器功能。我一直看到数据在控制器之间进行操作,但不是函数。
例如。我有两个控制器。
Module.Controller('Controller1', function($scope){
$scope.function1 = function(){};
});
Module.Controller("Controller2", function(){
// I need to call the function function1() from the controller1
});
这可能吗?你能帮我解决一下吗?
答案 0 :(得分:3)
如果您需要重用另一个控制器的逻辑,我建议将该逻辑移动到您可以在两个控制器中注入的服务。这是一个更清洁的解决方案,更容易测试。
示例:
Module.service("Service1", function(){
this.function1 = function(){
...
}
});
Module.Controller('Controller1', function($scope, Service1){
$scope.function1 = Service1.function1;
});
Module.Controller("Controller2", function(Service1){
// I need to call the function function1() from the controller1
// simply call Service1.function1 here
});
答案 1 :(得分:0)
您无法直接将一个功能调用到另一个控制器中。但是,您可以通过以下方式更改内容:
$rootScope.function1
代替$scope
,$rootScope
是
可从每个$scope
$rootScope.$emit
从Controller2调用事件并在Controller1中使用$rootScope.$on
捕获它,然后使用函数$scope.$watch
或$rootScope.$watch
,或使用$rootScope.$watch
除非