角度重复滤波器

时间:2014-01-17 14:08:38

标签: javascript angularjs

我有一个消息对象,我想在表格中显示, 我不想显示消息的所有属性,所以我将其中一些设置为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',
    }

问题是,每个属性都会被显示,即使是那个应该是错误的属性。

此外,属性显示的顺序错误(按字母顺序排列),如何使用我定义的默认顺序

2 个答案:

答案 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
    }