我有一个消息对象,我想在表格中显示, 我不想显示消息的所有属性,所以我将其中一些设置为false,我想过滤设置为true的属性并显示它们
消息对象:
message0 = {
id: {
wert: 0,
status: pr_active.id
},
category: {
wert: 'General',
status: pr_active.category
},
icon_id: {
wert: '1',
status: pr_active.id.icon_id
},
text: {
wert: 'Success',
status: pr_active.id.text
}
};
scope.messages = [message0, message1, message2];
ngRepeat:
<tr ng-repeat="message in messages | filter: {category : category}">
<td ng-repeat="property in message | filter: {status:true}">
{{property.wert}}
</td>
</tr>
我正在使用status-Object,其中包含每个可能属性的状态,以便我可以将其连接到表的标题
pr_active = {
id: 'false',
category: 'false',
icon_id: 'true',
text: 'true',
}
问题是,每个属性都会被显示,即使是那个应该是错误的属性。
此外,属性显示的顺序错误(按字母顺序排列),如何使用我定义的默认顺序
答案 0 :(得分:0)
您没有在JavaScript中定义对象的订单(请参阅Does JavaScript Guarantee Object Property Order?)。 因此,您必须手动为您的属性定义订单。 但这可能已经解决了你的问题:
假设您必须定义要显示的属性的顺序,那么您也可以只定义要查看的属性:
$scope.properties = [
// 'id', // just use a comment if you don't want to see them
// 'category',
'icon_id',
'text'
]
然后,您只需迭代内部properties
中的ng-repeat
数组:
<tr ng-repeat="message in messages | filter: {category : category}">
<td ng-repeat="property in properties">
{{message[property].wert}}
</td>
</tr>
答案 1 :(得分:0)
你试过吗?:
pr_active = {
id: false,
category: false,
icon_id: true,
text: true
}