繁体   English   中英

JavaScript如何选择remote-data.service

[英]How javascript select remote-data.service

我买了一个应用。 我是Javascript和AngularJS的新手。 我正在尝试遵循代码,但我不明白homeService.js上的函数如何知道必须使用remote-data.service.js

这是home.controller.js

...
(function activate() {
        ...
        loadCategories();
        ...
    })();
...
// ...............................
function loadCategories() {
        debugger;
        homeService.getFeaturedCategories()
            .then(function(categories) {
                vm.categories = categories;
            });
    }

该函数调用homeService.getFeaturedCategories()。 所以....

home.service.js

function getFeaturedCategories() {
        return dataService.getFeaturedCategories();
    }

对dataService.getFeaturedCategories()的函数调用这是data.service.js调用remoteDataService.js时,此文件生成hhtp.get(我粘贴了data.service.js的完整代码):

(function() {
'use strict';

angular
    .module('restaurant.common')
    .factory('dataService', dataService);

dataService.$inject = ['ENV', '$injector'];

/* @ngInject */
function dataService(ENV, $injector) {
    switch(ENV.dataProvider) {
        case 'LOCAL':
            return $injector.get('localDataService');
        case 'REMOTE':
            return $injector.get('remoteDataService');
        case 'FIREBASE':
            return $injector.get('firebaseDataService');
    }

    throw new Error('Data provider is not valid');
}
})();

我想知道:

  • 函数如何返回remoteDataService。
  • 我也想知道如何仅使home.service.js中的dataService.getFeaturedCategories()函数使该dataservice返回localDataService。 因为我想加载本地JSON(而不是创建http.get)

谢谢!

  1. 不明白问题。 您的数据服务一次读取ENV.dataProvider,然后返回适当的服务。 在当前的实现中,它无法为不同的调用返回不同的服务。
  2. 您应该在home.service中使用“ localDataService”,而不是“ dataService”。 只需更改名称即可。

在您的Home.service中,您应该有如下几行:

homeService.$inject = ['dataService'];

function homeService(dataService){
  ...
}

更改为:($ inject和参数的顺序应该相同。)

homeService.$inject = ['dataService', 'localDataService'];

function homeService(dataService, localDataService){ 
  ...
}

并在您的fn中使用localDataService。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM