Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS ng重复—;声明性过滤器与命令式过滤器_Angularjs_Angularjs Ng Repeat - Fatal编程技术网

AngularJS ng重复—;声明性过滤器与命令式过滤器

AngularJS ng重复—;声明性过滤器与命令式过滤器,angularjs,angularjs-ng-repeat,Angularjs,Angularjs Ng Repeat,什么时候应该使用声明式风格,什么时候在角度过滤器中使用命令式风格 例如,我想orderBy和limito重复ng中的一些对象数组。在哪些情况下,最好在HTML代码中使用声明性内联筛选器: var items = [ {id:123, date:1412631216000}, {id:328, date:1412631217000}, … // 50 more tiny objects {id:553, date:1412631398000} ]; $scop

什么时候应该使用声明式风格,什么时候在角度过滤器中使用命令式风格

例如,我想orderBylimito重复ng中的一些对象数组。在哪些情况下,最好在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>
var项目=[
{id:123,日期:1412631216000},
{id:328,日期:1412631217000},
…//50多个小物体
{id:553,日期:1412631398000}
];
$scope.limit=5;
$scope.items=items;//将有53个项目,但我只需要其中5个显示在一页上
在哪些情况下,手动过滤和限制数组是值得的

// 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>
//我的所有项目中通常都有Lo-Dash.js或下划线.js
风险价值限额=5;
可变项目=[
{id:123,日期:1412631843000},
{id:328,日期:1412631217000},
…//50多个小物体
{id:553,日期:1412631398000}
];
项目=uu.sortBy(项目“日期”);
items.reverse();
items=items.slice(0,限制);
$scope.items=items;//这将是我所需要的输出-5项

使用AngularJs,您可以使用两种方式:

  • 使用过滤器 如果模板上有ng repeat,则确实需要使用声明性过滤器。这是在这个框架中设计的非常棒的特性。 唯一的缺点是,您的数据集将通过您在每个$digest()循环中定义的所有过滤器。这可能会导致一些性能问题。但无论如何,在大多数情况下,这是一个应该使用的漂亮工具

  • 使用自定义筛选 有时,您需要预处理模型中的数据。例如,当您接收到非常长的数组时,您不希望使用角度默认过滤器来处理1000000个条目。在这种情况下,您可以使用某种数据光标快速对内存中的数据进行排序,然后将数据传递给Angular$scope View系统。


  • 在选择过滤器时,你必须考虑:1)你目前有多懒。-如果您想要一些已经存在的东西,并且懒得编写javascript