关于javascript:将单选按钮绑定到复杂对象可防止选中

Binding radio button to complex object prevents selected

我把我的收音机按钮绑在我的模特身上,就像这样:

1
<input type="radio" ng-model="formData.style" ng-value="{{style}}">

其中,样式是具有多个属性的复杂对象。这是在ng重复中完成的,所以我有其中的倍数。样式可以是这样的:

1
{"name":"kran","size":"2"}

等等…我希望将完整的对象绑定到模型,以便稍后将其保存为状态,并检索它以继续使用它。但是当我用保存的"状态"更新模型时,用户界面不会更新以显示选择了哪个单选按钮。我认为这与绑定到复杂对象有关,而不是一个简单的值,但我不确定。

Style对象来自另一个类似这样的数组:

1
 

我如何解决这个问题?


我的第一个回答有点错。我在这里举了一个很好的例子:

https://jsfiddle.net/lisapfisterer/szp3dudh/

HTML

1
2
3
4
5
6
7
8
9
<form>
    <label>Radio-Buttons</label>
    <br/>
    <label ng-repeat="style in styles">
        <input type="radio" ng-model="formData.style" ng-value="style"> {{style.name}}
    </label>
    <br/>

</form>

角晶状体

1
2
3
4
5
6
7
8
   var first = { name:"First Name", value:"First Value" };
   var second = { name:"Second Name", value:"Second Value" };
   var third = { name:"Third Name", value:"Third Value" };

   $scope.styles = [first, second, third];

   $scope.formData = {};
   $scope.formData.style = $scope.styles[0];


我在努力得到工作的公认答案,我怀疑是因为ng repeat创建子作用域,因此必须绑定到$parent:

试试这个

HTML

1
2
3
4
5
6
7
<form>
<label>Radio-Buttons</label>
<br/>
<label ng-repeat="style in styles">
    <input type="radio" ng-model="$parent.formData.style" ng-value="style"> {{style.name}}
</label>
<br/>