2014-06-28 23 views
0

我正在建立一個基於來自API的JSON數據的無線電輸入動態列表。AngularJS-動態輸入[電臺]不會保持檢查

我使用ngRepeat + track by,input[radio]ngValue

任何新XHR請求將刷新數據的範圍,但目前檢查無線電(如果有的話),將取消選中


看到這個plnkr演示:http://embed.plnkr.co/2q1A7krBzxIjkfwhXYcK/preview


這可以通過在ngValue使用插值指令來解決,但感覺好像我做錯了:

<input type="radio" name="c" ng-value="{{ choice }}" ng-model="selected.choice" required> 

這也可以通過使用ng-init來解決,但它仍然覺得我做錯了:

<input type="radio" name="c" ng-init="c = choice" ng-value="c" ng-model="selected.choice" required> 

有人可以請給我解釋一下這是怎麼回事?


相關問題:

回答

1

角是用參照這裏平等找出哪個單選按鈕被選中,所以當你更換整個xhrData對象的引用丟失。

你可以看到這是如何工作,如果你添加

$scope.selected.choice = $scope.xhrData.all.choices[2] 

您提取器功能的底部。

恐怕您必須在更換xhrData對象之前保存選項,然後在獲取新數據後重置它。我不知道有任何其他的方式來做到這一點。

+0

非常感謝您的回答:)我希望AngularJS使用某種isEqual http://underscorejs.org/#isEqual進行比較。 – kemar

+0

是的,這在很多情況下都會有用。我想他們有使用對象引用的好理由,儘管我不知道它是什麼。我想你可以通過爲你的'ng-model'使用原始類型來解決這個問題,但是這會爲新問題開闢一扇門,因爲你必須編寫代碼來找到與模型匹配的正確對象。無論如何,如果你想保存選擇,你必須這樣做。 – ivarni