2012-06-26 1 views
1

У меня есть сценарии, требующие привязки значения данных (обычно извлекаемых во время выполнения) для формирования элемента. В этом случае элемент представляет собой Ember.Select, который будет отображаться повторно для произвольного набора данных длины.Связывание с Ember.Select в цикле atemplate

jsFiddle можно найти здесь simple example

<script type="text/x-handlebars"> 
{{#each App.simpleSelectionArray.content}} 
{{this.firstName}} 
    {{view Ember.Select 
     contentBinding="App.peopleController.content" 
     selectionBinding="this" 
     optionLabelPath="content.fullName" 
     optionValuePath="content.id"}} 

    <p>Selected: {{this.fullName}} 
    (ID: {{this.id}})</p> 
{{/each}} 

{{#each App.selectionArray.content}} 
{{this.person.firstName}} 
    {{view Ember.Select 
     contentBinding="App.peopleController.content" 
     selectionBinding="this.person" 
     optionLabelPath="content.fullName" 
     optionValuePath="content.id"}} 

    <p>Selected: {{this.person.fullName}} 
    (ID: {{this.person.id}})</p> 
{{/each}} 
</script> 

window.App = Ember.Application.create(); 

App.Person = Ember.Object.extend({ 
    id: null, 
    firstName: null, 
    lastName: null, 

    fullName: function() { 
     return this.get('firstName') + " " + this.get('lastName'); 
    }.property('firstName', 'lastName').cacheable() 
}); 


App.peopleController = Ember.ArrayController.create({ 
    content: [ 
     App.Person.create({id: 1,firstName: 'Yehuda',lastName: 'Katz'}), 
     App.Person.create({id: 2,firstName: 'Tom',lastName: 'Dale'}), 
     App.Person.create({id: 3,firstName: 'Peter',lastName: 'Wagenet'}), 
     App.Person.create({id: 4,firstName: 'Erik',lastName: 'Bryn'}) 
    ] 
}); 

App.simpleSelectionArray = Ember.ArrayController.create({ 
    content: [ 
     App.peopleController.objectAt(1) 
    ]}); 

App.selectionArray = Ember.ArrayController.create({ 
    content: [ 
     { 
      id: '2', 
      person: Ember.computed(function(key, value) { 
       if (arguments.length === 1){ 
        var personId = this.get('id'); 
        console.log(personId); 
        var listedPerson = App.peopleController.content.findProperty("id", personId); 
        return listedPerson ; 
       }else{ 
        this.set(key,value); 
        return value; 
       } 
      }).property('id').cacheable() 
     },      
    ]}); 

​ 

Два сгенерированные выберите элементы на основе различных структур данных. Первые (в основном) ведут себя так, как ожидалось, за исключением выбора обязательного сообщения.

Вторая структура данных, которая будет более типичной, не работает для меня вообще.

Любые мысли?

+0

Хмм, я не уверен, что я понимаю ваш вопрос: у вас есть массив элементов, по которым вы хотите итерации, и внутри каждой итерации вы хотите показать '