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

Javascript 如何使用对象作为单选按钮的ng值?,javascript,angularjs,angular-ngmodel,Javascript,Angularjs,Angular Ngmodel,有没有办法用对象来表示单选按钮的ng值 假设您有一个单选按钮,其ng模型是一个对象,如下所示: modelObject: {val:'', text:''} 这将是单选按钮: <input type="radio" ng-model="data.modelObject" ng-value=""/> 是否有一种方法可以执行以下操作(显然不起作用) ?? 谢谢 我知道我可以使用ng变更指令。我只是想知道我所问的是否可能,这将是非常明智的 编辑: 根据评论中的要求,我将提供一些

有没有办法用对象来表示单选按钮的ng值

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

modelObject: {val:'', text:''}
这将是单选按钮:

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

是否有一种方法可以执行以下操作(显然不起作用)


?? 谢谢

我知道我可以使用ng变更指令。我只是想知道我所问的是否可能,这将是非常明智的

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

我想在模型中保存按钮的值及其标签。假设我的控制器中有一个名为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>


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

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

您可以使用
ng value=“option”



当您需要
id
时,您可以从
$scope.option.id
获得它;当您需要
text
时,您可以从
$scope.option.text
访问它。检查我的答案。这适用于您的情况吗?

我觉得您应该使用
ng change
调用控制器中的一个函数,该函数可以适当地设置
val
text
(虽然我不确定
选项是什么)@Ian这是我现在遵循的方式,但我想知道是否有可能实现我的要求,它将大大加快事情的速度实际上,它不会很聪明——相当混乱(我仍然不知道应该使用
val
text
属性)。为什么不创建一个指令?@ExpertSystem好吧,我不知道它是否会很智能,但它对我的设置非常有用。关于这个指令,我刚从Angular开始,可能会有点让人不知所措。@ExpertSystem我已经写了我的第一个指令,创建一个“可重用”组件,但在这种情况下,每个单选按钮组都会有稍微不同的属性,所以写一个指令可能会非常复杂,谢谢你的帮助,但是有没有办法让属性的值不被硬编码?如果我尝试执行类似以下操作:{val:option.id,text:option.text}。请查看我问题中的编辑,以准确了解场景。再次感谢,这是你第二次帮助我做角度:)当然这是可能的()
opt
是通过
ng init
定义的,所以我不需要创建控制器再次感谢你。我不明白问题出在哪里。如果我尝试使用{val:opt.id,text:opt.text},它会崩溃。我可以使用{val:{{option.id}}},但是如果我尝试使用{val:{{{option.id}},text:{{option.text}},它会再次崩溃。对不起,我是一个非常n00b的angularNo问题,第一部分看起来不错,但是如果您没有定义option对象,可能会导致问题。你可以像我一样通过ng单元设置那个对象,或者在控制器中,这是建议的$scope.option={id:5,文本:'abc'};选项显然是在ng repeat指令中定义的,正如您在问题代码中所看到的。。。。啊!
<input type="radio" model="data.modelObject" ng-value="val:option.id, text:option.text"/>
<div ng-app>
    <input type="radio" ng-model="modelObject" ng-value="{val:1, text:'text'}"/>
    <p>>{{modelObject|json}}<</p>
</div>
<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>
<input type="radio" model="data.modelObject" ng-value="option"/>