2015-08-26 75 views
0

我正在研究一個簡單的Ember應用程序,該應用程序顯示了列表元素的ID。這些ID是根據元素序列(以及其他一些簡單因素)通過簡單的函數計算出來的。例如:在哪裏以及如何添加Ember模型函數

<div class="content-id element">[ELEMENT ID]</div> 
<div class="content-name">{{element.name}}</div> 

我不想硬編碼元素的ID爲JSON對象,而是計算它們在一個簡單的函數。將這個函數放在路由對象中還是放在組件中最好?語法是什麼?

謝謝。

回答

1

如果您想僅基於模型屬性計算某些內容,則應使用計算屬性。在下面的例子中,我定義了一個計算的屬性citiesString

import DS from 'ember-data'; 
import Ember from 'ember'; 

export default DS.Model.extend({ 
    name: DS.attr('string'), 
    cities: DS.hasMany('city', { async: false }), 

    citiesString: Ember.computed('cities', function() { 
    var cities = []; 
    this.get('cities').forEach(function (item, index, enumerable) { 
     cities.push(item.get('name')); 
    }, this); 

    return cities.join(', '); 
    }) 
}); 

您可以使用計算屬性像任何其他:如果你想使用元素的索引

{{#each elements as |element index|}} 
    {{element.citiesString}} 
{{/each}} 

(如果我沒有理解「元素序列」右) ,除了編寫一個幫助器之外,我無法想象其他方式,傳遞給它元素,索引和返回ID。助手的例子:

//app/helpers/my-helper.js 
import Ember from 'ember'; 

export default Ember.Handlebars.makeBoundHelper(function (element, index) { 
    return index; //do something useful instead of this 
}); 

如何使用它:

{{#each elements as |element index|}} 
    {{my-helper element index}} 
{{/each}} 

你應該記住,指數可以改變(如可以訂購數組元素)和不同的用戶可能會看到不同的ID相同的元素。

相關問題