Как привязать динамические переключатели к свойству контроллера в Ember

Новый до тлеющего, так голый со мной.

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

Я попытался ответить на этот вопрос: /questions/27937744/ember-100-tip-privyazki-radio-provereno-privyazka-ne-obnovlyaetsya-pri-izmenenii-svojstva/27937749#27937749

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

Это фрагмент из принятого ответа:

 <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 не обновляется.

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

1 ответ

Решение

Объем меняется внутри #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}}

Вот рабочий JSFiddle

Вот документы

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

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

Другие вопросы по тегам