AngularJs Factory未更新值

时间:2019-03-27 12:29:34

标签: javascript angularjs

我正在尝试创建一个基础工厂,容纳所有我的commom API调用,然后将它们扩展到各自的资源,这些资源将由我的控制器调用。

我遇到的问题是,每当我尝试调用tableResource.getAll()时(请参见下面的代码),它就会自动获取BaseFactory URL,而不是我创建的资源中的URL。

我的代码如下:

BaseFactory.js

(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) }
    }
})();

TableResource.js

(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;
    }
})();

1 个答案:

答案 0 :(得分:0)

我对angularjs中的服务继承了解不多,但似乎您正在使用基本服务URL:RequestService.get(_url, {});进行资源请求。

如果在创建子服务时我没看错,那您就在设置service.url。您应该在service.url内使用_getAll()或添加一个setter方法。