2015-03-06 5 views
5

यह सुनिश्चित नहीं है कि उचित "एम्बर वे" क्या करना है।एम्बर टेम्पलेट में निरंतर पहुंच

मेरे पास निम्न टेम्पलेट है, जहां मैं तीन task-item-list घटक उदाहरण रखना चाहता हूं, प्रत्येक एक अलग taskState मान के लिए। जाहिर है, मैं जादू संख्या से छुटकारा पाना चाहता हूं।

<h4>Tasks:</h4> 

<div><h5>Backlog:</h5> 
    {{ task-item-list tasks=model taskState=101 }} 
</div> 

<div><h5>Working:</h5> 
    {{ task-item-list tasks=model taskState=202 }} 
</div> 

<div><h5>Done!</h5> 
    {{ task-item-list tasks=model taskState=303 }} 
</div> 

धन्यवाद this discussion को मैं अपने config/environment.js फ़ाइल में स्थिरांक परिभाषित कर सकते हैं और उन्हें मॉडल, परीक्षण, आदि में उपयोग करें, लेकिन नहीं मेरे टेम्पलेट में (निकट के रूप में मैं बता सकता हूँ के रूप में)।

क्या स्थिरांक का उपयोग करने का कोई तरीका है, या ऐसा करने का कोई बेहतर तरीका है? मैं घटक subclassing देख सकते हैं, लेकिन मुझे नहीं लगता कि यह एक अच्छा समाधान है।

धन्यवाद!

उत्तर

6

क्या आपने अपने घटकों में env इंजेक्ट करने का प्रयास किया है? कुछ इस तरह:

एप्लिकेशन/initializers/इंजेक्षन-env.js

import env from '../config/environment'; 

export function initialize(container, application) { 
    application.register('env:main', env, { singleton: true, instantiate: false }); 
    application.inject('component', 'env', 'env:main'); 
} 

export default { 
    name: 'inject-env', 
    initialize: initialize 
}; 

और फिर किसी भी घटक में आप env संपत्ति का उपयोग कर config/environment.js की सामग्री को प्राप्त करने में सक्षम हो जाएगा। उदाहरण के लिए {{env.environment}} वर्तमान वातावरण दिखाएगा।

तुम सिर्फ सभी घटकों के बजाय अपने task-item-list घटक में इंजेक्षन करना चाहते हैं, तो आप उपयोग कर सकते हैं:

application.inject('component:task-item-list', 'env', 'env:main');

+0

बढ़िया है, धन्यवाद! यह अच्छी तरह से काम करता है, चेतावनी के साथ कि मुझे अपना टेम्पलेट अपने घटक से ऊपर बनाना था, इसलिए यह इंजेक्शन को "देख" सकता था। अब मेरे हिस्से पर अधिक शोध ... –

3

मैं एक ही समस्या का सामना करना पड़ा और एक सहायक बनाने के द्वारा इसे हल, कि विन्यास फाइल पढ़ सकते हैं :

//...app/helpers/read-env.js 
import Ember from 'ember'; 
import ENV from '../config/environment'; 

export function readEnv(params/*, hash*/) { 
    if (params.length === 0) { 
    return undefined; 
    } 

    return Ember.Object.create(ENV).get(params[0]); 
} 

export default Ember.Helper.helper(readEnv); 

स्थिरांक इस तरह परिभाषित किया गया:

ENV.CATEGORY = { 
    'CATEGORY_1': 0, 
    'CATEGORY_2': 1 
}; 

टेम्पलेट में मैं इसे इस तरह का उपयोग करें:

{{read-env 'CATEGORY.CATEGORY_1'}} 
संबंधित मुद्दे