gpt4 book ai didi

Angularjs - $resource 即服务,多个 url 问题

转载 作者:行者123 更新时间:2023-12-02 19:26:31 25 4
gpt4 key购买 nike

我有这项服务:

(function() {
'use strict';
angular
.module('myApp')
.factory('Consultant', Consultant);

Consultant.$inject = ['$resource', 'DateUtils'];

function Consultant ($resource, DateUtils) {
var resourceUrl = 'api/consultants/:id';

return $resource(resourceUrl, {}, {
'query': { method: 'GET', isArray: true},
'get': {
method: 'GET',
transformResponse: function (data) {
data = angular.fromJson(data);
return data;
}
},
'update': {
method: 'PUT',
transformRequest: function (data) {
return angular.toJson(data);
},
transformResponse: function (data) {
data = angular.fromJson(data);
return data;
}
},
'save': {
method: 'POST',
transformRequest: function (data) {
return angular.toJson(data);
},
transformResponse: function (data) {
data = angular.fromJson(data);
return data;
}
}
});
}
})();

如果我想将网址api/consultantscustom/:id(及其查询/获取/更新方法)添加到此服务怎么办?
由于该文件似乎只能包含一个工厂,有没有办法做到这一点,或者我是否需要使用新工厂创建另一个文件?

最佳答案

也许我完全误解了您的要求,但是您可以根据需要在一个文件中包含任意多个工厂(或看起来有用):

(function() {
'use strict';

angular.module('myApp')
.factory('Consultant', Consultant)
.factory('Custom', Custom);

Consultant.$inject = ['$resource', 'DateUtils'];
Custom.$inject = ['$resource'];

function Consultant ($resource, DateUtils) {
var resourceUrl = 'api/consultants/:id';
...
}

function Custom ($resource) {
var resourceUrl = 'api/consultantscustom/:id';
...
}
<小时/>

或者,如果您想重新使用同一个工厂来访问不同的 URL,您可以添加方法来设置 URL,然后重新使用对通用资源的调用。

function Consultant ($resource, DateUtils) {

function consultants () {
_call_resource('api/consultants/:id');
}
function custom () {
_call_resource('api/consultantscustom/:id');
}

function _call_resource (resourceUrl) {
return $resource(resourceUrl, {}, {
...
}
}

this.consultants = consultants;
this.custom = custom;
return this;
}

关于Angularjs - $resource 即服务,多个 url 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36643772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com