2017-05-17 9 views
2

現在、私はEmberアプリケーションにスタティックをロードする方法を考えています。 問題:Ember Appにストア/ロードスタティックスの適切な方法

私は私が今やっているアプリのブランドロゴ、アプリ名、アプリのタイトル(ブラウザのタブのラベル)、ルートのテキストなど を持っては、次のとおりです。

あなたのよう
model() { 
    let defaultHeaderModel = { 
    logo: '/img/logo-cloud.svg', 
    brand: { 
    name: 'CloudCenter', 
    logo: '/img/logo-cloud.svg' 
    }, 
    userLinks: [{ 
    text: 'Logout', 
    route: 'logout' 
    }], 
    navigation: [{ 
    text: 'Login', 
    route: 'login' 
    }] 
}; 
} 

すべての値がハードコーディングされていることがわかります。私がしたいのは、何とかその "統計"をロードし、いくつかの変数を通してそれらを使用することです。例:header.logo = resources.logo。 私の考え:

1)environmentを使用する - 必要な場合にそのすべてがそれをconfig.js内の値とimport保存します。短所:そのデータが環境に属しているかどうかわからない

2)アプリにインポートできるES6 POJO。

3).jsonとは、.jsonというファイルをロードし、それを介してその値にアクセスします。

このようなことを行うための標準化されたアプローチはありますか?あるいはもっと良い提案ですか?

+0

をapplication.js。 – Lux

答えて

1

サービスを作成し、Promiseを返すメソッド(loadData)があり、JSONデータとサービスの更新プロパティで解決されます。 beforeModelフックでloadDataに電話する必要があります。すべての約束が解決された後でモデルフックに移動します。

Refer twiddle basic demonstration

サービス/ MY-service.js

import Ember from 'ember'; 
export default Ember.Service.extend({ 
    defaultHeaderModel:{}, 
    loadData(){ 
    var myServiceDataLoadPromise = Ember.RSVP.Promise.resolve({one:1}); 
    myServiceDataLoadPromise.then(result =>{ 
     this.set('defaultHeaderModel',result); 
    }); 
    return myServiceDataLoadPromise; 
    } 
}); 

ルート/ beforeModelフックの内側
をapplication.js、あなたがデータとサービスを読み込むことができ、それがどのルートのいずれかを行うことができますデータが必要です。

import Ember from 'ember'; 
export default Ember.Route.extend({ 
    myService: Ember.inject.service(), 
    beforeModel() 
    { 
    return Ember.RSVP.all([this.get('myService').loadData()]); 
    }  
}); 

コントローラ/あなたは `エンバー-i18n`のような翻訳フレームワークを使用することができ

import Ember from 'ember'; 
export default Ember.Controller.extend({ 
    myService: Ember.inject.service(), 
    appName: 'Ember Twiddle' 
}); 

テンプレート/ application.hbs

{{myService.defaultHeaderModel.one}} 
+0

ええ、私はルートフックなどについて知っています。私が必要とするのは、その値を格納する方法(別の '.json'ファイル、環境、または何か他のもの)に関する提案です。 –

+0

これは私のアプリでは、一般的に単純な設定データでクライアント側で管理できる場合、私は先に定数をエクスポートするutilsファイルを定義することをお勧めします(つまり、2番目のオプション)。 'config.js'ファイルではありません(つまり、最初のオプション)。ちなみにこのための標準はありません、あなたの便利さでは、あなたのニーズに合った、快適に感じることに従うことができます。 – kumkanillam

+1

うん、音utilsファイル音良い、ありがとう –