AngularJS 复选框 ng-repeat 和选定对象?

Posted

技术标签:

【中文标题】AngularJS 复选框 ng-repeat 和选定对象?【英文标题】:AngularJS checkbox ng-repeat and selected objects? 【发布时间】:2013-01-27 20:42:18 【问题描述】:

我试图以适当的方式减少痛苦,但我不知道如何处理 ng-model 并将其绑定到选定的列表等,而且我需要在以后填充该列表和将选定的对象保留在其中。

categories = [  "name": "Sport", "id": "50d5ad"  , "name": "General", "id": "678ffr"  ]

    <span ng-repeat="category in categories">
      <label class="checkbox" for="category.id">
        <input type="checkbox" value="category.id" ng-model="??" ng-click="??" name="group" id="category.id" />
        category.name
      </label>
    </span>

每次填充列表时我都必须覆盖类别,因为它将从服务器中提取出来。

所以我想我需要有数组,而第二个将保存选定的对象?

如果我是对的,我该如何预选复选框?

我是否需要 ng-click 才能调用自定义函数将所选对象存储在另一个数组中?

我需要在复选框中使用 ng-model 吗?为什么?

什么是少痛苦的正确方法?

【问题讨论】:

【参考方案1】:

每次填充列表时,我都必须覆盖类别 因为它将被拉出表单服务器。所以我想我需要 数组,第二个将保存选定的对象?

是的,因为它是一个列表,您可以/应该使用数组。有关所选项目/对象的信息应存储在您的范围模型中(示例如下)。

如果我是对的,我如何预先选择复选框?

将所选选项/复选框的 ID 保存在您的模型上,然后让 ng-model 完成剩下的工作。

我是否需要 ng-click 才能调用自定义函数来存储所选内容 另一个数组中的对象?

不,你不需要它,ng-model 就足够了。

复选框中是否需要 ng-model?又是为了什么?

是的,你需要它。 ng-model 负责将选定的选项存储在您的模型上并自动进行(“预”)选择。

jsfiddle http://jsfiddle.net/bmleite/PQvQ2/

【讨论】:

感谢您的回答。但是我想将洞对象存储在像 selection.objects 而不是 selection.ids 这样的东西中怎么样?还有可能吗? 您仍然可以这样做,在这种情况下,只关注selections.ids 上的更改并基于此创建selection.objects 似乎更容易。示例:jsfiddle.net/bmleite/PQvQ2/1 对此的简化 - 有时更简单更好jsfiddle.net/PQvQ2/82 或在一个对象内jsfiddle.net/PQvQ2/83 是否可以显示另一个仅包含选定对象的 ng-repeat? 有什么简单的方法可以切换所有的复选框吗?

以上是关于AngularJS 复选框 ng-repeat 和选定对象?的主要内容,如果未能解决你的问题,请参考以下文章

在angularjs中选中checkall和checkbox时,推送并拼接成数组

AngularJS ng Repeat - 使用复选框按单个对象属性筛选列表

ng-repeat 内的 ng-repeat 和每个项目的 td - AngularJS

使用 AngularJS 和 ng-repeat 初始化选择

关于angularjs的ng-repeat指令

AngularJS——创建自定义数据绑定和 ng-repeat