Как привязать динамические переключатели к свойству контроллера в 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}}
А для любопытных вот оригинальный пример кода для настроенной кнопки радио, которую он использует: http://jsfiddle.net/chopper/CM6fK/35/
Стоит отметить, что для правильной работы этих привязок объекты в массиве должны быть объектами Ember, и их нужно добавлять, удалять и изменять только с помощью методов Ember (get
а также set
), что обеспечит правильное обновление всех привязок.