什么时候我应该使用声明式样式和Angular过滤器中的命令?
例如,我想 orderBy 和 limitTo ng-repeat 中的某些对象数组。在这种情况下,最好在HTML代码中使用声明性内联过滤器:
var items = [
{id:123, date:1412631216000},
{id:328, date:1412631217000},
… // 50 more tiny objects
{id:553, date:1412631398000}
];
$scope.limit = 5;
$scope.items = items; // there will be 53 items, but I need only 5 of them to display on a page
<ul>
<li ng-repeat="item in items | orderBy:'date':true | limitTo:limit">
…
</li>
</ul>
并且在哪些情况下值得手动过滤和限制数组?
// I usually have Lo-Dash.js or Underscore.js in all my projects
var limit = 5;
var items = [
{id:123, date:1412631843000},
{id:328, date:1412631217000},
… // 50 more tiny objects
{id:553, date:1412631398000}
];
items = _.sortBy(items, 'date');
items.reverse();
items = items.slice(0, limit);
$scope.items = items; // there will be exactly what I need for output — 5 items
<ul>
<li ng-repeat="item in items">
…
</li>
</ul>
答案 0 :(得分:2)
使用AngularJs,您可以使用两种方式:
使用过滤器 如果您在模板上有 ng-repeat ,那么您肯定需要使用声明性过滤器。它在这个框架中设计了非常棒的功能。 唯一的缺点是,您的数据集将通过您在每个$ digest()周期 上定义 的所有过滤器。它可能会导致一些性能问题。但无论如何,在大多数情况下,它是一个应该使用的漂亮工具。
使用自定义过滤 有时您需要在模型中预处理数据。例如,当您收到非常长的数组并且您不想使用Angular默认过滤器来处理1 000 000个条目时。在这种情况下,您可以使用某种数据光标快速对内存中的数据进行排序,然后将数据传递给Angular $ scope&lt; - &gt;查看系统。