【问题标题】:AngularJS - Filtering Json by a variableAngularJS - 通过变量过滤 Json
【发布时间】:2015-08-20 04:13:40
【问题描述】:

我正在使用动态路由开发单页应用程序。我从以下 URL 获取 bookid

myApp.controller('BookCtrl', function($scope,$routeParams) {
    $scope.mybookid=$routeParams.bookurl;
});

这是我的数据

var bookdata  = {
"records": [
  {
    "seriesid": "SpectrumSeries",
    "name": "White Curse",
    "bookid": "WhiteCurse",
    "image": "book1",
  }

...
]};

在上面的控制器中,如何过滤出 bookid 等于 $scope.mybookid 的对象?我知道我可以通过 ng-repeat 和 filter 做到这一点,但有没有更有效的方法?

【问题讨论】:

  • bookidrecords 中唯一吗?
  • 所以您可以使用数组来代替数组,然后通过属性名称获取值,例如:var bookdata = { "records": { "WhiteCurse" : { "seriesid": "SpectrumSeries", "name": "White Curse", "bookid": "WhiteCurse", "image": "book1", } 然后records[$scope.mybookid]
  • mybookid 是一个字符串,(即“WhiteCurse”,不是数字)因为我是从 URL 中获取的,所以这种方法可行吗?
  • 您需要将数组records 更改为对象,然后在我的示例中一切正常 - 记录是对象,而不是数组
  • 我会试试的。谢谢你的建议

标签: json angularjs filter


【解决方案1】:

在 javascript 中使用过滤器:

var filteredBooks = bookdata.records.filter(function(book){
    return book.bookid == $scope.mybookid; 
});

filteredBooks 数组将包含所有带有您 bookId 的书。

【讨论】:

  • 从对象中获取属性,我认为比过滤数组更有效
猜你喜欢
  • 2015-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-12
  • 1970-01-01
  • 2016-08-28
相关资源
最近更新 更多