我正在尝试创建一个基础工厂,容纳所有我的commom API调用,然后将它们扩展到各自的资源,这些资源将由我的控制器调用。
我遇到的问题是,每当我尝试调用tableResource.getAll()
时(请参见下面的代码),它就会自动获取BaseFactory URL,而不是我创建的资源中的URL。
我的代码如下:
(function () {
'use strict';
angular.module('app.myapp', []).factory('BaseFactory', BaseFactory);
function BaseFactory(RequestService) {
/**
* @ngdoc property
* @name _url
* @summary The odata URL
*/
let _url = "/odata/";
/**
* @ngdoc Method
* @name _getAll
* @summary Gets the full list of items
*/
let _getAll = () => {
return RequestService.get(_url, {});
}
let service = {
url: _url,
getAll: _getAll
}
return function (options) { angular.extend(this, service, options) }
}
})();
(function () {
'use strict';
angular.module('app.myapp').service('tableResource', tableResource);
function tableResource(BaseResource) {
/**
* @ngdoc function
* @name init
* @summary Initializes the resource by extending the base resource
*/
let init = () => {
var base = new BaseResource({ url: '/odata/Table' });
angular.extend(this, base);
}
init();
return this;
}
})();
答案 0 :(得分:0)
我对angularjs中的服务继承了解不多,但似乎您正在使用基本服务URL:RequestService.get(_url, {});
进行资源请求。
如果在创建子服务时我没看错,那您就在设置service.url
。您应该在service.url
内使用_getAll()
或添加一个setter方法。