【发布时间】:2014-01-21 22:24:26
【问题描述】:
在我的 AngularJS 应用程序中,我在网格中显示联系人数据。我的典型联系人 JSON 如下所示...
[
{ type: "IM", value: "mavaze123", default: true },
{ type: "IM", value: "mvaze2014", default: false },
{ type: "IM", value: "mavaze923", default: false },
{ type: "IM", value: "mvaze8927", default: false },
{ type: "Email", value: "mavaze123@abc.com", default: true },
{ type: "Email", value: "mvaze2014@xyz.net", default: false }
]
最后一个属性'default'实际上是一个单选按钮,选择它应该会改变上面JSON中相应联系人类型的原始默认值。每种类型的联系人都可以有一个默认值,即我们可以根据联系人类型对单选按钮进行分组。
<div ng-repeat="contact in contacts">
<div>{{contact.type}}</div>
<div>{{contact.value}}</div>
<div><input type="radio" name="{{contact.type}}" ng-model="contact.default" ng-value="true"/></div>
</div>
注意:上面的代码并不完全一样,但大致相同,如 它将出现在自定义网格组件中。
现在,当我使用上述 JSON 加载查看/编辑表单页面时,它会正确显示所有联系人的无线电状态。问题来了,在页面加载后,当用户选择另一个联系人作为默认值时。这实际上将新选择的联系人的默认模型值更改为真,但是原始默认联系人的模型值仍然保持为真,即使其无线电状态更改为取消选中/模糊(因为它们具有相同的“名称”值)。
我想写一个指令,但我无法在无线电模糊/取消选中事件上触发它。
有很多关于将布尔值绑定到单选按钮的帖子,但我无法在我的场景中使用它,因为我想更新单选按钮组中单个单选按钮的模型值。看看没有代表无线电组的单一模型。
【问题讨论】:
标签: angularjs angularjs-directive angularjs-scope radio radio-group