在另一个Controller angularjs中调用Controller angularjs

时间:2016-10-30 23:15:35

标签: angularjs controller

我的问题是我有2个控制器...我想知道是否可以调用它们中的任何功能以便一起工作... 例如:

firstController.js

angular.module('myApp').controller('FirstController', ['$scope', 'FirstService', function($scope, FirstService) {
    function verify(){
        //Some operations
    }
}]);

secondController.js

angular.module('myApp').controller('SecondController', ['$scope', 'SecondService', function($scope, SecondService) {
    function edit(iditem){
        //Some operations
        //I wanna call here verify() function
    }
}]);

这可能吗?

提前致谢!

3 个答案:

答案 0 :(得分:2)

您只能使用一个服务并从两个控制器调用服务。这是一个基本的例子,你可以添加一个构造函数并传递它$ scope,例如它取决于你想要完成的任务。

'use strict';

/**
 * Service
 */

angular.module('myApp.someService', [])
        .factory("someService", function () {

           return {   
               verify: function() {},
               edit: function(iditem){
                   self.verify();
               }
});

然后你的控制器看起来像这样:

angular.module('myApp').controller('FirstController', ['$scope', 'someService', function($scope, someService) {

   service.verify($scope);

}]);

angular.module('myApp').controller('SecondController', ['$scope', 'someService', function($scope, someService) {

    service.edit(iditem);

}]);

答案 1 :(得分:0)

您可以通过$rootScope控制器

执行此操作

在FirstContoller中包含$ rootScope,分配一个函数:

$rootScope.myFirstController_verify = verify;

从包含$rootScope的第二个控制器调用它:

$rootScope.myFirstController_verify();

答案 2 :(得分:0)

使用原型继承

如果控制器是嵌套的:

<div ng-controller="FirstController">

    <div ng-controller="SecondController">

    </div>

</div>

如果FirstController在$scope上发布其函数,嵌套控制器可以通过原型继承来调用函数。

在$ scope上发布功能:

app.controller('FirstController', function($scope) {

    $scope.firstVerify = verify;

    function verify(){
        //Some operations
    }
});

通过$ scope继承调用:

app.controller('SecondController', function($scope) {
    function edit(iditem){
        //Some operations
        //I wanna call here verify() function
        $scope.firstVerify();
    }
});

这仅在第二个控制器的范围是第一个控制器范围的子范围时才有效。

正如您所看到的,这个问题有很多答案。使用哪个答案取决于具体的用例。