2016-10-01 18 views
0

私はアプリを買った。私はJavascriptとAngularJSの新機能です。私は、コードを次のようにしようとしているが、私はhomeService.jsの機能はそれがリモートdata.service.jsを使用するどのようにjavascript select remote-data.service

を持って知っているか理解していないこれは、home.controller.js

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

関数呼び出しhomeService.getFeaturedCategories()。ときremoteDataService.jsにdata.service.jsコールので....ここ

home.service.js

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

dataService.getFeaturedCategoriesへの関数呼び出し() であり、このファイルには、(私はdata.service.jsの完全なコードを貼り付け)hhtp.getします

(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を返す方法。
  • また、私はそれをどのようにして関数のdataService.getFeaturedCategories()のhome.service.jsにして、そのdataserviceがlocalDataServiceを返すようにしたいと思っています。私はローカルのJSONをロードしたいので(http.getを作らないで)

ありがとう!

+0

'ENV'はプロバイダーのように動作しており、コード内のconfig関数のどこかでリモートに設定されています。 –

答えて

0
  1. 質問が分かりません。データサービスはENV.dataProviderを一度読み込み、適切なサービスを返します。現在の実装では、さまざまな呼び出しに対して異なるサービスを返すことはできません。
  2. "dataService"の代わりに "localDataService"をhome.serviceで使用する必要があります。名前を変更するだけです。

    homeService.$inject = ['dataService']; 
    
    function homeService(dataService){ 
        ... 
    } 
    

    に変更し、それを::($の順注入し、引数が同じでなければなりません。)

    homeService.$inject = ['dataService', 'localDataService']; 
    
    function homeService(dataService, localDataService){ 
        ... 
    } 
    

    とlocalDataServiceを使用するあなたのような行を持つべきであるあなたのHome.serviceで

あなたのfnで

+0

いいえ、私はlocalDataServiceをこの関数でのみ使用したいからです。どうやってやるの? –

+0

ホームサービスでは、angle $ injectメカニズムを介してdataServiceとlocalDataServiceの両方をリクエストし、localDataServiceを1つの関数で使用し、他のデータサービスを –

+0

に置くことができます。ありがとう。 –