2013-04-04 1 views
1

У меня есть следующий рабочий код Handlebar:Loop в течение первых двух записей перечислимого

{{#each phoneNumber in switchboardEntry.sipAccount.phoneNumbers}} 
    <span class="label"> 
    {{phoneNumber.number}} 
    </span> 
{{/each}} 

Но я хотел бы, чтобы петля только первых двух записей switchboardEntry.sipAccount.phoneNumbers, а не через комплект. Я нашел пример фильтра на http://emberjs.com/guides/enumerables/, но все же в режиме мышления Ruby я попытался установить этот фильтр после switchboardEntry.sipAccount.phoneNumbers, который не работает.

Каков наилучший способ справиться с этим?

+0

вы не можете просто использовать 'switchboardEntry.sipAccount.phoneNumbers [0]' и 'switchboardEntry.sipAccount.phoneNumbers [1]' в этом случае? –

+0

@FinnMacCool делает это не так гибко, если позже он хочет 3 или 4 элемента в списке. Также дублирующий код :) – mbogh

+0

да, ЕСЛИ он планирует изменить его позже, ваше решение определенно лучше. –

ответ

2

Вы можете добавить вымышленное свойство в sipAccount.

Что-то вроде этого, может быть:

App.SipAccount = DS.Model.extend({ 
    phoneNumbers: DS.hasMany('App.PhoneNumbers'), 

    phoneNumberShortList: Ember.computed(function() { 
     var phoneNumbers = this.get('phoneNumbers'); 
     return phoneNumbers.slice(0,2); 
    }).property('[email protected]') 
}); 

Update

Код Рули затем будет:

{{#each phoneNumber in switchboardEntry.sipAccount.phoneNumberShortList}} 
    <span class="label"> 
    {{phoneNumber.number}} 
    </span> 
{{/each}} 
+0

Что такое 'property ('phoneNumbers. @ Each.number')' part for? Это просто имя? – wintermeyer

+0

Это говорит Эмберу, чтобы получить свойство номера каждого из номеров телефона. Если вы просто написали свойство ('phoneNumbers'), то преобразование вашего шаблона Handlerbars {{phoneNumber.number}} разрешится к undefined. Только идентификатор свойства будет существовать. Если вам также необходимо отобразить, например. свойство label должно быть: property ('phoneNumbers. @ each.number', 'phoneNumbers. @ each.label'). – mbogh

0
<span class="label"> 
    {{switchboardEntry.sipAccount.phoneNumbers.0.number}} 
</span> 

<span class="label"> 
    {{switchboardEntry.sipAccount.phoneNumbers.1.number}} 
</span> 

ИЛИ

{{#with switchboardEntry.sipAccount.phoneNumbers}} 
    <span class="label"> 
    {{0.number}} 
    </span> 

    <span class="label"> 
    {{1.number}} 
    </span> 
{{/with}} 

Fiddle

Смежные вопросы