Javascript 如何使用对象作为单选按钮的ng值?
有没有办法用对象来表示单选按钮的ng值 假设您有一个单选按钮,其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变更指令。我只是想知道我所问的是否可能,这将是非常明智的 编辑: 根据评论中的要求,我将提供一些
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"/>