2013-12-19 2 views
1

Скажем, у меня есть Person модельВычисляется собственности на отдельной записи в ArrayController

App.Person = DS.Model.extend 
    firstName: DS.attr 'string' 
    lastName: DS.attr 'string' 

И у меня есть маршрут, чтобы показать всем людям

App.Router.map -> 
    @route 'people' 

App.PeopleRoute = Ember.Route.extend 
    model: -> 
    @store.find('person') 

App.PeopleController = Ember.ArrayController.extend 

    # This doesn't work 
    fullName: (-> 
    @get('firstName') 
).property('firstName') 

Как я могу определить fullName вычисленного имущества в ArrayController для каждого человека в массиве, поэтому я могу сделать что-то вроде этого?

{{#each}} 
    {{fullName}} 
{{/each}} 

ответ

0

контроллер массива управлять массив объектов, вы можете определить itemController использовать дополнительные методы в каждом элементе. Примерно так:

App.PeopleController = Ember.ArrayController.extend 
    itemController: 'person' 

App.PersonController = Ember.ObjectController.extend 
    fullName: (-> 
    @get('firstName') 
).property('firstName') 
0
fullNames: (-> 
    @getEach('firstName') 
).property('@each.firstName') 

{{#each name in fullNames}} 
    {{name}} 
{{/each}} 
0

В дополнение к двум другим ответам, так как задав вопрос, я нашел третье решение.

Мы можем поместить рассчитанные свойства в саму модель, которая позволяет нам вызвать метод в любом месте нашего приложения.

App.Person = DS.Model.extend 
    firstName: DS.attr 'string' 
    lastName: DS.attr 'string' 
    email: DS.attr 'string' 

    fullName: (-> 
    "#{@get('firstName')} #{@get('lastName')}" 
).property('firstName', 'lastName') 
Смежные вопросы