0

我想做的是根据传递给我的数据制作一些动态单选/复选框字段。不幸的是,我无法控制这些数据的格式,但完成工作应该没问题。

据我所知:http: //plnkr.co/edit/LKwueHUzSrC5JpeBY9So

我最终需要得到的数据格式是一个简单的数组,如下所示:

"school_type": [
    "Government/State",
    "International",
    "Co-educational"
]

此数据可能来自单选框或复选框(如果已选中)。如果只有一个选项,则显示复选框,如果有多个选项,则显示单选框。

所以我可以显示字段,但我遇到的问题是:

  1. 单选按钮上的name属性似乎不适用于每组。
  2. 我不知道如何将选中的复选框/收音机的值返回到控制器并进入我需要的数组。我认为最简单的方法是使用可用的 ng-change 属性并将函数传递给它,但是每次尝试时我都会遇到错误。

任何帮助,将不胜感激。

4

1 回答 1

2

您的代码有几个问题:

  1. 您没有在需要的地方使用插值;
  2. 您没有将控件绑定到范围;

这是您更新的代码:

<label ng-switch-when="r" class="radio">
  <div ng-repeat="option in options">
    <input type="radio" name="{{fieldname}}" ng-model="$parent.$parent.selectedid" value="{{option}}">
    <span>{{ option }}</span>
  </div>
</label>
<label ng-switch-when="c" class="checkbox">
  <input type="checkbox" name="{{fieldname}}" ng-false-value="" ng-true-value="{{options[0]}}" ng-model="$parent.selectedid">
  <span>{{ options[0] }}</span>
</label>

请注意,为了正确绑定控件,我必须使用$parent.$parent单选按钮和$parent复选框。这是必要的,因为两者都ng-switch创建了ng-repeat新的子作用域。所以我不得不为复选框上一层,为单选按钮上两层。如果您使用对象而不是原语进行绑定,则可以避免这种情况。我建议你尝试重构你的代码,让它这样做。这篇文章有更多关于这个问题的信息。

最后,这是您的 Plunker 的工作版本

于 2013-09-14T03:47:21.563 回答