获得单选按钮的价值

时间:2017-10-01 09:48:02

标签: html angularjs

修改 当我尝试提交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> 标记中未显示任何值。我在其他主题中搜索并尝试了一些已发布的答案,但它无效。

2 个答案:

答案 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-modelchosenPlan更改为$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属性设置为公用名。

请在下面找到相同的工作模型。

JSFiddle Demo

旧答案:

<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>

模拟数据并提供参考示例:

JSFiddle Demo