在一个工厂中组合多个return语句

时间:2015-12-23 14:07:02

标签: javascript angularjs rest

我目前正在深入研究AngularJS层,我想知道如何(我知道有可能)合并我的两个工厂模块:

// one
services.factory('UserService', function ($resource) {

    return $resource('rest/user/:action', {},
            {
                authenticate: {
                    method: 'POST',
                    params: {'action': 'authenticate'},
                    headers: {'Content-Type': 'application/x-www-form-urlencoded'}
                },
            });
});

//two
services.factory('UserService', function ($resource) {

    return $resource('rest/user/:id', {id: '@id'});
});

我试过这个:

services.factory('UserService', function ($resource) {

    return {
        authenticateUser: $resource('rest/user/:action', {},
                {
                    authenticate: {
                        method: 'POST',
                        params: {'action': 'authenticate'},
                        headers: {'Content-Type': 'application/x-www-form-urlencoded'}
                    },
                }),
        userID: $resource('rest/user/:id', {id: '@id'})
    };

});

并带有函数变量。我正在为用户的所有操作使用一个RESTful Web服务。

提前致谢

1 个答案:

答案 0 :(得分:0)

将它们更改为方法

services.factory('UserService', function ($resource) {

    return {
        authenticateUser: function() {
            return $resource('rest/user/:action', {},
                {
                    authenticate: {
                        method: 'POST',
                        params: {'action': 'authenticate'},
                        headers: {'Content-Type': 'application/x-www-form-urlencoded'}
                    },
                })
        },
        userID: function () {
            return $resource('rest/user/:id', {id: '@id'})
        }
    };

});

并将其用作

// authenticate user
var UserAuth = UserService.authenticateUser();
UserAuth.authenticate({username: $scope.username, password: $scope.password});

// user id
var UserId = UserService.userID();
UserId.get({id: 123}, function (user) {
    // code
});