通过id数组过滤角度数据

Filter angular data by array of ids

本文关键字:数据 过滤 id 数组 通过      更新时间:2023-09-26

我有一个json文件包含我的数据

[{"id":"349","title":"event 1"},{"id":"350","title":"event 2"},{"id":"351","title":"event 3"}]

用户可以将事件保存到本地存储并保存在数组中

$storage.myEvents = ["349","350"]

用;

显示页面上的所有事件
<ion-item class="item-icon-right item-brown" ui-sref="detail({id: event.id})" ng-repeat="event in events track by event.id ">
        <h2 class="positive"><b>{{event.title}}</b></h2> 
</ion-item>

我想只显示用户在$storage.myEvents中存储的事件,但是我的过滤器不起作用

<ion-item class="item-icon-right item-brown" ui-sref="detail({id: event.id})"
  ng-repeat="event in events track by $index | filter: {id: $storage.myEvents }">

给出错误Error: filter:notarray Expected array but received: 0,如果我查询本地存储,我得到

localStorage["ngStorage-myEvents"]
"["349","350"]"

如果我把滤镜改成

 filter: {id: JSON.parse($storage.myEvents)}

我仍然得到相同的错误…

我该如何解决这个问题?

可以使用自定义过滤器

  $scope.myFilter = function (e) {
    var s = $scope.$storage.myEvents;
    if (s.indexOf(e.id) != -1) return true;
    return false;
  }
  <ion-item class="item-icon-right item-brown" ui-sref="detail({id: event.id})" 
       ng-repeat="event in events | filter: myFilter track by $index">

这是中继器

event in events track by event.id

似乎有相同事件的事件。