2014-09-29 2 views
1

Новое к ember, так голые со мной.Как привязать динамические переключатели к свойству контроллера в Ember

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

Я попытался ответить на этот вопрос: https://stackoverflow.com/a/18991426/62653

Однако, это не работает, когда вы создаете радиокнопок динамически.

Это отрывок из принятого ответа:

<label> 
    {{view Ember.RadioButton name="selectionTest" selectionBinding="isSelected" value="true"}} 
    true 
</label> 
<label> 
    {{view Ember.RadioButton name="selectionTest" selectionBinding="isSelected" value="false"}} 
    false 
</label> 

Но когда вы создаете точку кнопки радио динамически, как это, он не работает:

{{#each myModel.someCollection}} 
    <label> 
     {{view Ember.RadioButton name="selectionTest" selectionBinding="isSelected" value=id}} 
     {{id}} 
    </label> 
{{/each}} 

Если вы используете цикл для создания переключателей, как указано выше, свойство isSelected не обновляется.

Любые идеи или другие решения для привязки переключателей?

ответ

5

Объем изменяется внутри блока #each для каждого объекта в myModel.someCollection. Поэтому вы привязываете значение myModel.someCollection.collection.isSelected. Вы хотите использовать альтернативную форму блока #each, который не меняет контекст, позволяя вам привязываться к isSelected. Кроме того, необходимо явно связать значение, которое код, который вы использовали в качестве матрицы не должен делать, так как значение было зашито в Попробуйте это:.

{{#each item in myModel.someCollection}} 
    <label> 
     {{view Ember.RadioButton name="selectionTest" selectionBinding="isSelected" valueBinding=item.id}} 
     {{item.id}} 
    </label> 
{{/each}} 

Here is a working JSFiddle

Here are the docs

И для любопытного, вот оригинальный примерный код для настраиваемого радиобата, который он использует: http://jsfiddle.net/chopper/CM6fK/35/

Стоит отметить, что для правильной работы этих привязок требуются объекты в массиве чтобы быть Ember-объектами, и их нужно добавлять, удалять и модифицировать только с использованием методов Ember (get и set), что обеспечит правильное обновление всех привязок.

+1

@ rustytome, вы спасатель жизни, спасибо большое. Человек, так сложно найти документацию по этому поводу. Действительно оцените хорошо продуманный ответ! – andy

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