【发布时间】:2015-06-12 09:04:33
【问题描述】:
我无法根据不同数组中对象的状态来确定如何使用 ng-repeat。
想象一下我的页面显示 3 个表格,使用 ng-repeat 填充:
- 人员列表,带有基于
active字段选中的复选框。 - 消息列表,仅显示拥有
active : true的人的消息。 - 从第二个表中汇总的消息统计信息列表,显示每个类别中的消息数量,但应仅计算具有
active : true状态的用户的消息。
一个例子如下所示。第一个表显示所有用户,未选中“anna”复选框。带有消息的第二个表不显示“anna”的消息。第三个表格显示了每个类别中的消息数量,用于发送给除 anna 之外的任何人的消息。
$scope.person = [
{ id : 1, name : "john", active : true},
{ id : 2, name : "bob", active: true},
{ id : 3, name : "anna", active: false}
]
$scope.messages = [
{ personid: 1, message: "hello", category: "greeting"},
{ personid: 1, message: "hi", category: "greeting"},
{ personid: 2, message: "hello", category: "greeting"},
{ personid: 2, message: "no", category: "denial"},
{ personid: 2, message: "yes", category: "confirmation"},
{ personid: 3, message: "yes", category: "confirmation"}
]
$scope.messagestatistics = [
{ category : "greeting", count : 3},
{ category : "denial", count: 1},
{ category : "confirmation", count: 1}
]
上面显示的 messagestatistics 数组是在仅考虑人员 'john' 和 'anna' 的情况下生成的。
我已经能够使用 ng-repeat 创建第一个表,并根据用户单击的复选框更新 active 字段。如何将其传播到其他表?
到目前为止,我尝试为消息数组中的每个对象添加一个状态,即 active : true/false 基于人员数组的状态。然后,每次用户单击第一个表中的复选框时,我都会更新此状态,并重新生成 messagestatistics 表。但是,我会在 state 字段中保留重复的数据,并希望有一种更有角度的方式来做到这一点?如果我有 10 000 条消息,我还担心这可能不是一个好方法?
【问题讨论】:
标签: javascript angularjs checkbox ng-repeat