如何使用对象作为单选按钮的ng值?

时间:2014-05-09 16:59:11

标签: javascript angularjs angular-ngmodel

有没有办法将对象用于单选按钮的ng值?

想象一下,你有一个单选按钮,其ng模型是一个对象,如下所示:

modelObject: {val:'', text:''}

这就是单选按钮:

<input type="radio" ng-model="data.modelObject" ng-value=""/>

有没有办法做以下事情(显然它不起作用)

<input type="radio" model="data.modelObject" ng-value="val:option.id, text:option.text"/>

? 感谢

我知道我可以使用ng-change指令。我只是想知道我问的是否有可能,它会非常聪明

编辑: 根据评论中的要求,我提供了一些关于我的设置的额外信息。

我想在模型中保存按钮的值及其标签。所以假设我的控制器中有一个名为impactOptions的数组和一个用于创建按钮的ng-repeat指令:

<div ng-repeat="option in impactOptions" >
    <input type="radio" ng-model="data.modelObject.val" id="rbGroup{{option.id}} ng-value="option.id"/>
    <label for="rbGroup{{option.id}}">{{option.text}}</label>
</div>

这个设置的问题是,这样我只保存按钮的值,而我也想保存它的标签。我以后真的需要它。

我正在寻找一种方法来做这样的事情

<input type="radio" model="data.modelObject" ng-value="val:option.id, text:option.text"/>

2 个答案:

答案 0 :(得分:5)

您可以将对象作为ng-value中的值:

<div ng-app>
    <input type="radio" ng-model="modelObject" ng-value="{val:1, text:'text'}"/>
    <p>>{{modelObject|json}}<</p>
</div>

example fiddle

ng-value中的值也可以是动态的,也可以是每个请求:

<div ng-app ng-init="opt={id: 1, text: 'some text'}">
    <input type="radio" ng-model="modelObject" ng-value="{val:opt.id, text:opt.text}"/>
    <p>>{{modelObject|json}}<</p>
</div>

updated example fiddle

答案 1 :(得分:1)

您可以使用ng-value="option"

<input type="radio" model="data.modelObject" ng-value="option"/>

当您需要id时,可以从$scope.option.id获得该text,当您需要$scope.option.text时,可以从{{1}}访问它。检查我的回答here。这适合你的情况吗?