1. 程式人生 > >AngularJS之$resource中的params

AngularJS之$resource中的params

場景

在需要檢索使用者列表時,使用params在get請求中新增檢索資訊。

UserService

angular
        .module('user')
        .factory('UserService', UserService);

UserService.$inject = ['$resource']; // 注入$resource服務

    function UserService($resource) {

        let Users = $resource('/api/base/users/:userId', {
            userId: '@_id',
            params: '@findOption'  // 有檢索條件時,負責附加檢索資訊
        }, {
            update: {
                method: 'PUT'
            },
            changeStatus: {
                method: 'PATCH',
                url: 'api/base/users/:userId/status'
            },
            resetPassword: {
                method: 'PATCH',
                url: '/api/base/users/:userId/password'
            },
            import: {
                method: 'POST',
                url: '/api/base/users/import'
            }
        });

        angular.extend(Users, {
            passwordReset: function (userId) {
                return this.resetPassword(userId, {}).$promise;
            },
            importJSON: function (JSONdata) {
                return this.import(JSONdata).$promise;
            }
        });
        return Users;
    }

可以通過$resource()第三個引數來給資源自定義方法,如update、changeStatus等方法。

	{
            update: {
                method: 'PUT'
            },
            changeStatus: {
                method: 'PATCH',
                url: 'api/base/users/:userId/status'
            },
            resetPassword: {
                method: 'PATCH',
                url: '/api/base/users/:userId/password'
            },
            import: {
                method: 'POST',
                url: '/api/base/users/import'
            }
        }

params: ‘@findOption’ // 有檢索條件時,負責附加檢索資訊

controller中呼叫服務

需要檢索時

findOption = {
	searchText: '陳某'
}
UserService.query(findOption);

url

http://localhost:7000/api/base/users?searchText=陳某

不需要檢索時

UserService.query();

url

http://localhost:7000/api/base/users