AngularJS-动态输入[radio]不会保持检查状态

时间:2014-06-28 08:45:32

标签: angularjs

我根据来自API的JSON数据构建动态无线电输入列表。

我正在使用ngRepeat + track byinput[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 个答案:

答案 0 :(得分:1)

Angular在这里通过引用使用相等来确定哪个radiobutton被勾选,所以当你替换整个xhrData对象时,引用就会丢失。

如果添加

,您可以看到它的工作原理
$scope.selected.choice = $scope.xhrData.all.choices[2]

到你的fetcher-function的底部。

我担心在更换xhrData对象之前你必须保存选择,然后在获取新数据后重置它。我不知道有任何其他方法可以做到。