如何将动态单选按钮绑定到Ember中的控制器属性

How to bind dynamic radio buttons to controller property in Ember

本文关键字:Ember 控制器 属性 绑定 动态 单选按钮      更新时间:2023-09-26

我一直在为单选按钮而苦恼。我只想动态创建一些单选按钮,然后将选中的单选按钮绑定到控制器上的一个属性。

我试着回答这个问题: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不会更新。

有没有绑定单选按钮的想法或其他解决方案?

#each块内的作用域正在更改为myModel.someCollection中的每个对象。因此,您正在绑定myModel.some 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

这是的文档

对于好奇的人来说,以下是他正在使用的自定义radioButton的原始示例代码:http://jsfiddle.net/chopper/CM6fK/35/

值得注意的是,为了使这些绑定正常工作,数组中的对象必须是Ember对象,并且只需要使用Ember方法(getset)来添加、删除和修改它们,这将确保所有绑定都得到正确更新。