如何在angularjs中调用另一个控制器中的函数

时间:2015-07-09 13:24:19

标签: angularjs angularjs-directive angularjs-scope

unified.controller('YourteamController', function uniYourteamController($scope) {    
    testController.listTeams();
});    

unified.controller('testController', function testController($scope) {
    $scope.listTeams = function() {
        //Listing process
    };    
});

我有两个控制器。我需要在另一个控制器(testController)中调用一个函数(listTeams())。如何使用angularjs

来调用它

5 个答案:

答案 0 :(得分:1)

走服务方式。更容易测试,更符合“最佳实践”。

angular.module('sharedService', function () {
  function listTeams () {
    return 'teams!';
  }

  angular.extend(this, {
    listTeams: listTeams
  })
});

angular.module('ctrl1', function ($scope, sharedService) {
  angular.extend($scope, {
    listTeams: sharedService.listTeams
  });
});

angular.module('ctrl2', function ($scope, sharedService) {
  angular.extend($scope, {
    listTeams: sharedService.listTeams
  });
});

答案 1 :(得分:0)

您需要将第一个控制器作为依赖注入第二个控制器。 Here是如何做到的。

答案 2 :(得分:0)

执行以下操作......

  unified.controller('YourteamController', function uniYourteamController($scope) {    
        var testController= $scope.$new();
        $controller('testController',{$scope : testCtrl1ViewModel });
        testController.listTeams();
    });    

    unified.controller('testController', function($scope) {
        $scope.listTeams = function() {
            //Listing process
        };    
    });

答案 3 :(得分:0)

你必须提供一个服务,它将返回一个可以在两个具有不同范围的控制器中使用的函数。

========================================

unified.controller('YourteamController', function uniYourteamController($scope, $abc) {

$abc.listTeams();
});

unified.controller('testController', function testController($scope, $abc) {
$abc.listTeams();
});

unified.service('abc', function () {


this.listitems = function () {

}
});

答案 4 :(得分:0)

试试这个

unified.controller('YourteamController', function uniYourteamController($scope) {    
    $scope.$parent.listTeams();
});