在模块内调用控制器功能

时间:2014-04-16 20:17:18

标签: angularjs

我在我的控制器中定义了一个函数,我想在模块中调用它。这怎么可能?

控制器:

var App = angular.module('App',['ngResource','App.filters']);

App.controller('ExerciseCtrl', ['$scope','$http', function($scope, $http) {

    $scope.toggleOn = function (arr, id) {
        // Some code
    }; 

}]);

模块:

angular.module('App.filters', []).filter('someFilter', [function () {
    return function () {
        someArray = [];
        toggleOn(someArray, 1); // Wish to call this function
    };
}]);

我想在模块中调用toggleOn

2 个答案:

答案 0 :(得分:1)

脱离我的头顶,也许是这样的:

var App = angular.module('App',['ngResource','App.filters']);

App.service('toggleService', function(){
    var service = {
        toggleOn: function(arr, id){

        }
    };

    return service;
});

App.controller('ExerciseCtrl', ['$scope','$http', 'toggleService', function($scope, $http, toggleService) {

    $scope.toggleOn = toggleService.toggleOn;

}]);

angular.module('App.filters', []).filter('someFilter', ['toggleService', function (toggleService) {
    return function () {
        someArray = [];
        toggleService.toggleOn(someArray, 1); // Wish to call this function
    };
}]);

答案 1 :(得分:0)

angular.module('App.filters', []).filter('someFilter', [function () {
    return function (scope) {
        someArray = [];
        scope.toggleOn(someArray, 1); // Wish to call this function
    };
}]);

并将范围传递给过滤器

<span ng-controller="ExerciseCtrl">{{someFilter | this}}</span>