我根据来自API的JSON数据构建动态无线电输入列表。
我正在使用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>
有人可以向我解释一下发生了什么吗?
相关问题:
答案 0 :(得分:1)
Angular在这里通过引用使用相等来确定哪个radiobutton被勾选,所以当你替换整个xhrData
对象时,引用就会丢失。
如果添加
,您可以看到它的工作原理$scope.selected.choice = $scope.xhrData.all.choices[2]
到你的fetcher-function的底部。
我担心在更换xhrData
对象之前你必须保存选择,然后在获取新数据后重置它。我不知道有任何其他方法可以做到。