angularJs中的ng-repeat避免重复值

时间:2016-01-12 08:28:40

标签: angularjs angularjs-ng-repeat

我有这样的对象

{
        {
          "assetId" : "560",
          "assetName" : "Testname",
          "message" : "hai",
          "timestamp" : 1452585984181
        },
         {
          "message" : "haii",
          "timestamp" : 1452585999592
        },
       {
          "assetId" : "560",
          "assetName" : "Testname",
          "message" : "heloo",
          "timestamp" : 1452586221604
        }
      }

向此对象显示我正在使用ng-repeat。我的问题是

我需要显示使用ng-repat的所有邮件都在单assetName下。但在此对象中,两个对象具有相同的assetNameassetId。我需要显示相同对象的消息,但不需要在顶部重复显示assetName

我怎样才能避免重复的assetNameassetId。我用了

<div class="container" data-ng-repeat="data in dataList | unique:'assetId'">

但它完全删除了对象。我需要来自所有对象的消息。

是不是有可能。请帮忙 这是我期待的输出。:

enter image description here

2 个答案:

答案 0 :(得分:0)

这个怎么样:

<div class="container" data-ng-repeat="data in dataList | unique:'assetId'">
    <span>{{data.assetId}}</span>
    <div data-ng-repeat="data2 in dataList | filter:(data.assetId === undefined ? {assetId:'!'} : data.assetId)">
        <span>{{data2.message}}</span>
    </div>
</div>

答案 1 :(得分:0)

我认为您应该创建自己的自定义过滤器

yourApp.filter('customuniqueFilter', function() {
    return function( array, propertyThatMustBeUnique) {
        var newArray = [];
        for (i = 0; i++; i < array.length){
            if ( notYetInYourArray ){    // I was too lazy to think about a way to do it ;-) feel free to update my answer
                newArray.push(array[i]);
            }
        }
        return newArray;
    }
});

然后像这样使用它:

<div class="container" data-ng-repeat="data in dataList | customunique:'assetId'">