【问题标题】:AngularJS filter JSON object {} that is not an array of objectsAngularJS过滤不是对象数组的JSON对象{}
【发布时间】:2014-05-02 21:51:49
【问题描述】:

我正在尝试对 JSON 对象应用过滤器,但运气不佳。

数据结构是这样的:

$scope.jsonObj = {
    someid8979: {
        name: "Bill",
        age: 18
    },
    someid987: {
        name: "Ted",
        age: 17
    }
}

在我的 HTML 中,是这样的:

<input ng-model="search">
<div ng-repeat="(key,val) in jsonObj | filter:search">
    {{key}} - {{val.name}} - {{val.age}}
</div>

过去,我总是以对象数组的形式发送数据,实际上,如果我在这里这样做,它会起作用,但由于应用程序的性质,这是不可能的,因为我需要在代码的其他地方按名称(id)引用对象的属性。

有什么方法可以将过滤器应用于类似于此的 JSON 对象?

我可以创建一个单独的数组仅用于过滤目的,并将 JSON 对象作为我的其他操作的目标,但我宁愿不这样做:)

编辑:我将对象复制为数组并对其进行循环,从而允许过滤。这解决了我的问题,但不是以我希望的方式。可能已经足够好了。

【问题讨论】:

标签: javascript arrays json angularjs


【解决方案1】:

您可以将比较器功能放置在您的控制器中,就像在这个 plunker 中一样:

http://plnkr.co/edit/n93RjIqLehVymmjjbTQd?p=preview

【讨论】:

  • 我的模型不是数组。内置的 $filter 需要一个数组。我只是好奇是否有可以使用对象的解决方案。不是数组。 {} 与 []。
猜你喜欢
  • 1970-01-01
  • 2016-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-23
  • 2019-03-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多