angular 带有 ng-repeat 的复选框表单只能 select 一个选项

angular checkbox form with ng-repeat can only select one option

我正在尝试创建一个多步骤表单,第 2 步是一堆复选框。这是带有复选框的表单:

<form ng-submit="createSubCategory(formData)">
    <div ng-repeat="sub_category in event_sub_categories">
        <ion-checkbox ng-model="formData.sub_category" ng-true-value="'{{sub_category}}'">
          {{sub_category}}</ion-checkbox>
    </div>
    <button type="submit" class="button button-block button-positive">Continue</button>
</form>

复选框 (event_sub_categories) 的数据是从服务器中提取的。我需要将用户选择的输入保存到 formData。 formData 正在多步骤表单的每一页上收集,它将在所有表单页面之后与 post 请求一起提交。我是 angular 的新手,我对复选框的工作原理有些困惑。

问题 1:我了解 ng-model 如何处理普通文本字段。但我不确定我是否了解它如何与复选框一起使用。 ng-model 是否替换了 html name 元素?意思是,当我使用 $resource 将其提交给服务器时,数据的键是由 ng-model 设置的吗?

问题 2:如何命名 ng-model 使其成为 formData 的一部分,同时又与从数据库中提取的 sub_category 的名称相关。问题是使用上面的代码,在任何给定时间只能选择一个复选框,我希望用户能够在给定时间选中多个复选框。如果无法做到这一点,我怎样才能通过复选框获得我需要的功能?

为了能够一次 select 多个复选框,您需要一个对象 (angular) 来保存所有值。我已经在自己的应用程序中实现了这段代码,发现接收它的函数很容易解释对象。 (迭代对象检查 true/false 值)

这是您的 <ion-checkbox> 代码:

<ion-checkbox ng-repeat="sub_category in event_sub_categories" ng-model="formData[sub_category]">

这将为单击的每个复选框在 formData 对象内设置 subcategory: true/false

然后您需要做的就是将那个 formData 对象发送到任何地方,就像以前一样。这是一个代码笔,显示了复选框的变化、更新的 formData 对象和字符串化的 formData 对象。

http://codepen.io/anon/pen/LNdaev?editors=1010

我已经为 event_sub_categories 创建了自己的值作为示例,因此当然这些值与您自己的不同

如有任何问题,请发表评论。