2016-03-23 43 views
0

我正在從路由模板屬性創建一個emberjs組件,我正在傳遞要在模板中顯示的值。但我無法通過對象的括號表示在組件模板中訪問它。如何在車把模板中使用對象的括號表示法?

//route.hbs 
{{b-select 
    options=model.names 
    valueProp='name' 
}} 

型號

import Ember from 'ember'; 

export default Ember.Route.extend({ 
    model() { 
     return Ember.RSVP.hash({ 
      names: [{name: 'abc'}, {name: 'xyz'}] 
     }); 
    } 

}); 

組分B-選擇HBS文件

<select class="form-control" multiple={{multiple}}> 
    {{#each options as |option|}} 
    <option value="{{option}}">{{option[valueProp]}}</option> 
    {{/each}} 
</select> 

如果我使用的option.name代替option[valueProp]它可以完美運行。我如何動態地通過propery來選擇?爲什麼括號表示法不工作

組件JS文件

import Ember from 'ember'; 
import fallbackIfUndefined from '../utils/computed-fallback-if-undefined'; 

export default Ember.Component.extend({ 
    multiple: fallbackIfUndefined(false), 
    options: fallbackIfUndefined(null), 
    valueProp: fallbackIfUndefined(0), 
    actions: { 

    }, 
    didInsertElement() { 
     //initialize jquery functions 
     this.$('select').selectpicker({size: 6}); 
    }, 
    willDestroyElement() { 
     //remove all events 
    } 
}); 

我得到的錯誤是

錯誤: ... ALUE =「{{選項:第3行解析錯誤'} {「{{option [valueProp]}} < -----------------------^ 期待'ID','STRING','NUMBER ','BOOLEAN','UNDEFINED','NULL','DATA','無效'

回答

4

可以使用{{get}}幫手:

<option value="{{option}}">{{get option valueProp}}</option>

+0

謝謝。它工作完美 – murli2308

-1

可以使用車把查找助手:

http://handlebarsjs.com/builtin_helpers.html#lookup

試試這個:

<option value="{{option}}">{{lookup option valueProp}}</option> 
+0

爲什麼我收到錯誤。 ember.debug.js:16628未捕獲的錯誤:斷言失敗:無法找到名爲'lookup'的幫助器 – murli2308

+0

hmm ..也許你有一箇舊版本的燼。您可以自己編寫手柄查找助手。這很簡單。幫助代碼在這裏提到:http://stackoverflow.com/questions/29829723/example-of-using-handlebars-lookup-helper。 – Raja

+0

我正在使用燼2.4.2它仍然顯示該錯誤。是查找depricated?爲它編寫助手是否好主意? – murli2308