我正在开展角度1.2.x项目,我有一个使用ng-repeat和一组对象生成的单选按钮列表。
标记
<div ng-repeat="answer in question.answers track by $index">
<label>
<input type="radio" name="answers" ng-value="answer" ng-model="myDataModel">{{answer.text}}
</label>
</div>
阵列
[
{
"id":"0",
"parentId":"0a4540dfec6549b4a3bd1b8fb6169d77",
"text":"peanuts"
},
{
"id":"1",
"parentId":"deka9fkac6549b4a3bd1b8fb6169d77",
"text":"cashews"
},
{
"id":"2",
"parentId":"0a4540dfec6asdf4a3bd1b8fb6169d77",
"text":"brazil nuts"
}
]
如果我通过这样的无线电选择使用预标签来查看我的模型......
<pre>{{myDataModel | json}}</pre>
我看到随机属性会像我一样爬上我的数据
{
"id":"0",
"parentId":"0a4540dfec6549b4a3bd1b8fb6169d77",
"text":"peanuts",
"spc_mXSzO":0,
"idx_mXSzO":0
}
当我从服务器加载数据后尝试预选单选按钮时,这会导致问题。当我的控制器将我的模型设置为等于其中一个答案时,它没有那些属性,因此它不会选择无线电。此外,每次刷新页面时,这些属性名称都会更改,因此我无法模拟它们。这些来自何处以及在预选答案时我可以尝试绕过它们?
答案 0 :(得分:3)
好吧,我找到了罪魁祸首。这是图书馆https://github.com/isteven/angular-multi-select
它为了它的目的附加了spc和idx属性。
答案 1 :(得分:1)
我无法重现您所看到的内容 - 这里是您上面工作的傻瓜:
http://plnkr.co/edit/1td3XtqQjMDk1XYBbjEn?p=preview
您拥有的一个问题是输入标记中的ng-model指令。你不应该直接在$ scope上绑定原语。以下是对原因的详细描述:
https://github.com/angular/angular.js/wiki/Understanding-Scopes
您的代码更新:
<div ng-repeat="answer in question.answers track by $index">
<label>
<input type="radio" name="answers" ng-value="answer" ng-model="myDataModel.myAnswer" />{{answer.text}}
</label>
</div>