我需要在项目之后添加的书籍长度,这是我的控制器:
$scope.items = [
{"added_days_ago": 5, "books": [{"id":1, "added_days_ago": 6}, {"id":2, "added_days_ago": 3}, {"id":3, "added_days_ago": 4}]},
{"added_days_ago": 2, "books": [{"id":4, "added_days_ago": 3}]}
]
在控制器中我需要定义filteredBooksLength(我使用ng-table),然后显示如下:
{{filteredBooksLength}}
类似的东西:
filteredBooksLength = (books where book.added_days_ago > item.added_days_ago).length
答案 0 :(得分:1)
$scope.filteredBooksLength = function (item) {
return item.books.filter(function (book) {
return book.added_days_ago > item.added_days_ago
}).length
应该满足您的需求 - 在ng-repeat
区块内召唤它,并传递当前项目 - filteredBooksLength(item)
我们将范围访问给接受项对象作为参数的函数。我们在该对象上获取books
数组并通过filter
函数传递它,该函数仅返回book.added_days_ago
大于item.added_days_ago
的数据库作为数组。然后我们测量该数组的长度并将其返回。
从你所写的内容 - 以及你提出问题的方式 - 看起来你已经完成了一些Python。在JS中使用camelCase而不是snake_case是公认的做法 - 您可能希望更改items
对象中的键。另外,这些键周围的""
是多余的。
坚持下去!