2015-02-07 27 views
0

我正在做一个角度为1.2.x的项目,我有一个使用ng-repeat和一组对象生成的单选按钮列表。为什么角度ng重复添加属性到我的模型?

标记

<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 
} 

从我的服务器加载数据后,当我尝试预先选择一个单选按钮时,这会引发问题。当我的控制器将我的模型设置为等于其中一个答案时,它不具有这些属性,因此它不会选择收音机。此外,每次刷新页面时,这些属性名称都会更改,因此我无法嘲笑它们。这些来自哪里,我可以在预先选择答案时尝试解决这些问题?

+2

我从来没有见过Angular添加过类似的东西。我看到它唯一添加到数据的前缀是$。你可以创建一个能够重现问题的plunkr吗?我试过但无法让你的代码正常工作。 – 2015-02-07 01:50:09

回答

1

我无法重现你看到的任何 - 这里有一个plunker与你有以上工作内容:

http://plnkr.co/edit/1td3XtqQjMDk1XYBbjEn?p=preview

一个问题,你有什么是你输入NG-模型指令标签。您不应该直接在$ 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> 
+0

谢谢你试图重现这一点。我很难过。在这一点上,我最好的猜测是我使用的第三方库之一是疯狂的。我会开始逐一拉出来,看看是否是这种情况。如果我能找到一种方法在plnkr中重现这一点,我会回复。 – Constellates 2015-02-07 08:12:51