2015-02-07 49 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