修改
当我尝试提交undefined
的{{1}}时,我收到ng-model
。
我的radio
中的示例代码:
submit button
在 ng-click="addSubscriber(plan)"
内尝试console.log(plan)
,但获得addSubscriber()
。
由于获取所选单选按钮值的问题,我很头疼。该值正在显示,呈现undefined
取决于我的radio
。但是data
无法正常工作,我无法获得所选ng-model
的价值。
radio
<div class="row">
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<div ng-repeat="plan in plans" class="radio">
<label><input type="radio" ng-model="plan.plan" value="{{plan.plan_code}}" name="plan.plan_name">{{plan.plan_name | capitalize}}
</label>
</div>
</div>
<pre>{{plan.plan}}</pre>
</div>
标记中未显示任何值。我在其他主题中搜索并尝试了一些已发布的答案,但它无效。
答案 0 :(得分:1)
您的<pre>{{plan.plan}}</pre>
超出了ng-repeat的范围,因此plan.plan无法识别。如果您想为每个单选按钮显示一个值,您可以尝试这样 -
<div class="row">
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<div ng-repeat="plan in plans" class="radio">
<label><input type="radio" ng-change="radioChanged()" ng-model="plan.plan" value="{{plan.plan_code}}" name="plan.plan_name">{{plan.plan_name}}
</label>
<pre>{{plan.plan}}</pre>
</div>
</div>
我还添加了'ng-change'功能,因此您可以尝试将一些调试器放在该功能中,并观察控制器内部更改的值。
答案 1 :(得分:1)
<强>更新强>
另一个问题是ng-model
内的ng-repeat
无法更新控制器变量,这是由于这一事实。
ng-repeat
指令创建了一个新范围。
因此,我们需要将ng-model
从chosenPlan
更改为$parent.chosenPlan
,这将更新父作用域。
在上面的场景中,输入单选按钮需要设置在一个通用名称下,以便它们作为一组单选按钮。单选按钮的值也需要设置为可在提交函数中使用的公共变量。
<label>
<input type="radio" ng-model="$parent.chosenPlan" ng-value="plan.plan_code" name="test"/>
{{plan.plan_name | capitalize}}
</label>
在上面的表格中,我们可以看到ng-model
被设置为公共变量。组名name
属性设置为公用名。
请在下面找到相同的工作模型。
旧答案:
<pre>
标记位于ng-repeat
移到其中,将值更改为ng-value
,如下所示。具有适当值的名称应为name="{{plan.plan_name}}"
。如果您遇到任何问题,请告诉我。
<div ng-controller='MyController'>
<div class="row">
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<div ng-repeat="plan in plans" class="radio">
<label>
<input type="radio" ng-model="plan.plan" ng-value="plan.plan_code" name="{{plan.plan_name}}"/>{{plan.plan_name | capitalize}}
</label>
<pre>{{plan.plan}}</pre>
</div>
</div>
</div>
</div>
模拟数据并提供参考示例: