Javascript 选择JSON对象的子集&;数一数

Javascript 选择JSON对象的子集&;数一数,javascript,angularjs,checkbox,filter,Javascript,Angularjs,Checkbox,Filter,我在这里过得很愉快,可能是因为我对棱角分明的东西还不太熟悉,而且我还没有完全掌握一切 首先是场景,然后是一些代码: 我有一个从API调用中获取JSON对象的按钮。它变成$scope.collectors $http.post('get', $scope.formData).success(function(data) { $scope.collectors = data.results; ... 然后我用复选框把这些项目列成一个大列表,这样你就可以选择你想处理的项目。当你选择了你想要的

我在这里过得很愉快,可能是因为我对棱角分明的东西还不太熟悉,而且我还没有完全掌握一切

首先是场景,然后是一些代码:

我有一个从API调用中获取JSON对象的按钮。它变成$scope.collectors

$http.post('get', $scope.formData).success(function(data) {
    $scope.collectors = data.results;
...
然后我用复选框把这些项目列成一个大列表,这样你就可以选择你想处理的项目。当你选择了你想要的,你可以点击另一个按钮来收集所有这些信息,并对它们进行批量操作

这就是整个故事。他们认为我遇到的问题有两个。首先,我只是简单地计算检查的项目数。我是这样做的:

JS:
    $scope.selectedCollectors = {};

HTML:
    <div ng-repeat="collector in collectors">
        <input type="checkbox" name="collector-id" 
               value="{{collector.id}}"
               ng-model="selectedCollectors[collector.id]">
    </div>
    <p>Debug: {{ selectedCollectors }}</p>
    <p>There are {{ selectedCollectors.length }} items checked</p>
但是{{selectedCollectors.length}}从不增加或显示任何内容

第二件事基本上是我要做的,就是根据用户的选择,获取原始JSON对象的子集。除了循环遍历$scope.collectors中的每个项并将ID与selectedCollectors中的ID进行比较外,还有更好的方法获取此子集吗

有些东西让我觉得我应该把这个JSON对象变成一个纯数组,但也许不是

非常感谢您的建议和帮助。

这是我的解决方案

首先,我让angular向选中的收集器对象添加一个“selected”属性:


然后,第二次ng重复创建选定收集器的筛选子集:


请注意,第二次ng重复并没有生成任何标记-只生成selectedCollectors数组,它可以像范围变量一样访问。

collectors是数组对吗?
selectedCollectors
是一个对象,因此它没有
length
属性。
{"8596784":true,"7458347":true}