2016-04-19 17 views
0
Ember  : 1.13.6 
Ember Data : 1.13.7 

Ich muss in der Lage sein, eine globale Eigenschaft festzulegen und sie in meinen .hbs-Dateien zu verwenden. Nehmen wir an, für die Produktion brauche ich Bilder von einem anderen Server zu liefern, aber lokal zu entwickeln, können sie relativ zum Projekt getrennt werden.EmberJS config prod img src url

Wie kann ich eine globale Eigenschaft oder eine Konfiguration festlegen und sie in meinen .hbs-Dateien verwenden?

Antwort

0

Hier ist, was ich konnte kommen, das scheint zu arbeiten, aber keine Ahnung, ob es eine "gute Idee" ist.

config/environment.js - set konfigurierbar imgSrc Eigenschaft für ENVs

module.exports = function(environment) { 
    var ENV = { 
    //... 

    APP : { 
     imgSrc: '/prod/path/to/assets/' 
    } 

    //... 
    }; 

    if (environment === 'development') { 
    ENV.APP.imgSrc = 'assets/images/'; 
    } 

app.js - imgSrc Eigenschaft innerhalb app

import Ember from 'ember'; 
import Resolver from 'ember/resolver'; 
import loadInitializers from 'ember/load-initializers'; 
import config from './config/environment'; 

var App; 

//... 

App = Ember.Application.extend({ 
    modulePrefix: config.modulePrefix, 
    podModulePrefix: config.podModulePrefix, 
    Resolver: Resolver, 
    imgSrc: config.APP.imgSrc 
}); 

//... 

export default App; 

----- machen Erstellen Sie eine Komponente namens img-src -----

templates/Komponenten/img-src.hbs

<img src="{{imgSrc}}{{image}}" alt="{{alt}}"/> 

Komponenten/img-src.js

import Ember from 'ember'; 

export default Ember.Component.extend({ 
    tagName: 'div', 
    imgSrc: myApp.imgSrc 
}); 

HBS Komponentenverwendung

{{img-src image="spinner.gif" alt="Loading..."}} 

Ist das? s ging ungefähr richtig?