【发布时间】:2014-07-03 00:01:58
【问题描述】:
Plunker - http://plnkr.co/edit/jXdwOQR2YLnIWv8j02Yp
我正在使用 Angular 构建一个视图,其中包含主容器中的用户列表 (array-A) 和托管任何“选定”用户的用户侧边栏 (array-B)。
第一个 (A) 拥有所有用户。
[{ $$hashKey: "00F", id: "118207f5e52c3eb619a8760bc08c8224", 用户名: "John Smith" }, { $$hashKey: "00G", id: "9c2d6f31c88e7a654e64bd0d3371360a", 用户名: "Fredy Rincon" }, { ... }]
第二个 (B) 具有已选择的用户 (Firebase db) 并通过其预先填充侧边栏。如果用户已经被选中,那么他们会像在数组 A 中一样出现在这里。
我的目标是能够通过单击主容器中数组 A 中的项目来从数组 B/侧边栏视图中添加和删除对象。
下面是我所能得到的最接近的结果,但它没有考虑到预先填充到侧边栏上的现有用户,只是添加和删除已经存在的项目,就好像他们不在那里。
供您参考:
$scope.selectedUsers = 数组-B
user = 数组-A 中的对象
$scope.selectUser = function (user) {
console.log($scope.selectedUsers.indexOf(user))
if ($scope.selectedUsers.indexOf(user) === -1 ) {
$scope.selectedUsers.push(user);
console.log($scope.selectedUsers);
} else {
$scope.selectedUsers.splice($scope.selectedUsers.indexOf(user), 1);
console.log($scope.selectedUsers);
}
};
我真的不知道如何解决这个问题,非常感谢任何可能的帮助。
谢谢。
【问题讨论】:
-
那么,它们在两个数组中具有相同的对象属性(Angular 的东西之外)? id、用户名等?
-
没错,马克。
-
你考虑过使用 underscorejs 吗? underscorejs.org/#isEqual
-
我刚刚使用
Array.prototype.reduce发布了一个答案,但当然也可以使用下划线。但我认为他们想在这里使用_.reduce而不是_.isEqual。 -
谢谢马克。我还为我当前的进度添加了一个 plunker。我还需要能够在点击时删除项目。 plunker 可能会提供更多的清晰度。再次感谢。
标签: javascript arrays angularjs firebase