基于变量字符串调用不同的工厂方法

时间:2014-04-26 11:06:40

标签: javascript angularjs

我有像这样的工厂方法

angular.module('myAppServices', ['ngResource'])
    .factory('Users', function($resource) {
        return $resource('/MY/system/users');
    })
    .factory('Groups', function($resource) {
        return $resource('/MY/system/groups');
    });

我可以调用Users.get()方法和Groups.get()方法。但是如何基于字符串表示来运行这些方法。假设我有通用方法

function GenericCtrol($scope) {
    $scope.fmethod = 'Users'
    //how to run something like $scope.fmethod.get()
}

2 个答案:

答案 0 :(得分:0)

你能做的是

function GenericCtrol($scope,Users,Groups) {
    $scope.Users=Users;
    $scope.Groups=Groups;
    $scope.fmethod = 'Users';
    $scope[$scope.fmethod].get();
}

因为javascript对象只是一个键值映射。

答案 1 :(得分:0)

您可以使用$injector

function GenericCtrol($scope, $injector) {
    $scope.fmethod = 'Users';

    $injector.get($scope.fmethod).get();
}