У меня есть сценарии, требующие привязки значения данных (обычно извлекаемых во время выполнения) для формирования элемента. В этом случае элемент представляет собой 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()
},
]});
Два сгенерированные выберите элементы на основе различных структур данных. Первые (в основном) ведут себя так, как ожидалось, за исключением выбора обязательного сообщения.
Вторая структура данных, которая будет более типичной, не работает для меня вообще.
Любые мысли?
Хмм, я не уверен, что я понимаю ваш вопрос: у вас есть массив элементов, по которым вы хотите итерации, и внутри каждой итерации вы хотите показать ', какие параметры одинаковы для каждого элемента, и вы можете выбрать элемент из этого 'select', который затем сохраняется на самом элементе? Теперь я не знаю, понял ли я свой вопрос. Hmmm .. – pangratz
В реальном приложении мои данные состоят из набора правил, каждый из которых содержит переменное количество условий. Условия построены из одних и тех же опций выбора: rule: {considtions: []} – user1481567
Данные (надеюсь, привязаны к выбору) затем доступны для сохранения или других операций. Поскольку оба массива являются переменными по длине, я не знаю, как связываться с глобальным путем, как показано в большинстве других примеров. Итак, здесь я пытаюсь привязать локальный контекст шаблона внутри цикла {{#each}} - что должно? привязка к исходному состоянию, которое устанавливает его значение по умолчанию. – user1481567