调用角度工厂内的功能

时间:2015-06-08 08:20:47

标签: angularjs

我有一个工厂,如何在getAccountInformation()函数中调用'getAccountDetails'服务。

我尝试了以下方式,但没有工作。

f68ffb5 commit 6
...
d294fac commit 1

工厂

AccountService.getAccountDetails.getAccountDetailsService

2 个答案:

答案 0 :(得分:1)

我建议您从返回的提供程序中定义代码依赖项:

tellerApp.factory('AccountService',['$resource', function ($resource) {

    var getAccountDetails = $resource(XXX, {}, {getAccountDetailsService: {}});

    return {
        getAccountDetails : getAccountDetails,
        getAccountInformation: function($scope, number, transaction, index){
            getAccountDetails.getAccountDetailsService({number : number}).$promise.then(function(response){
                 ...
            })
        }      
    };
}]);

或者,在对象内部,您也可以使用this来引用当前对象,而不是使用AccountService.getAccountDetails,您应该使用this.getAccountDetails

tellerApp.factory('AccountService',['$resource', function ($resource) {

    return {
        getAccountDetails : $resource(XXX, {}, {getAccountDetailsService: {}});,
        getAccountInformation: function($scope, number, transaction, index){
            this.getAccountDetails.getAccountDetailsService({number : number}).$promise.then(function(response){
                 ...
            })
        }      
    };
}]);

另外,请注意,因为您的命名惯例令人困惑(getAccountDetails不是一个功能,因为您不会使用()来调用它,但它的名称为" get& #34;,getAccountServices首先被定义为一个对象,但稍后使用相同的名称进行功能...),特别是如果你想要一个准确的答案;)

答案 1 :(得分:0)

这应该可行,但还没有测试过。

tellerApp.factory('AccountService',['$resource', function ($resource) {
    var AccountService = {
        getAccountDetails: $resource(XXX, {}, {
            getAccountDetailsService: {}
        }),
        getAccountInformation: function($scope, number, transaction, index){
            AccountService.getAccountDetails.getAccountDetailsService({number : number}).$promise.then(function(response){
            }
        };       

    }
    return AccountService
}]);