我有一个自定义角度组件,用作具有过滤功能的下拉选择元素。输入是具有几个角度指令的基本输入元素:
<input type="text" class="form-control" ng-change="ctrl.filterTextChangeLocal($event)" ng-model="ctrl.ngModelValue" ng-click="ctrl.openDropdown($event)" />
上述输入负责打开下拉列表并允许用户键入,因为用户键入下拉列表元素中的数据会相应过滤。使用基本角度滤波器在控制器中进行滤波:
ctrl.filteredItems = ctrl.$filter("filter")(ctrl.items, ctrl.ngModelValue);
下拉元素如下所示:
<table class="table">
<thead>
<tr>
<th ng-repeat="heading in ctrl.gridColumnHeaders" class="text-center">{{heading}}</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="row in ctrl.filteredItems" ng-mousedown="ctrl.onSelectedLocal(row, $event)">
<td ng-repeat="value in ctrl.sort(row) track by $index" class="text-center">
{{value}}
</td>
</tr>
</tbody>
</table>
所有工作正常,但是随着传递到组件中的项目数量的增加(100个项目)和下拉列表的相应增加,过滤速度很慢。这意味着当我键入一个字符时,下拉列表的过滤会滞后。
我知道角度滤波器的性能并不是最好的,但我相信大部分延迟来自ng重复和双向绑定。我无法在ng内部创建单向绑定,请重复以下内容:
ng-repeat="value in ::ctrl.filteredItems"
因为我失去了过滤的绑定。将只在值上设置单向绑定以提高性能:
{{::value}}
或者,提高性能的最佳方法是什么?确实需要尝试并保持在角度框架中,以便寻找角度解决方案。
谢谢
您是否尝试过简单地应用:
one-time-binding="true"
直接在ng上重复?
通常,对100个元素进行双向绑定不会影响性能,但如果循环中有嵌套循环,则。。
我正在从事一个项目,该项目在很大程度上依赖angular来完成前端任务。在一个显示了大约50个带有ng repeat的条目的列表页面上,每个条目都有大量的观察者,因此我决定使用angular的静态绑定减少观察者的数量,并能够将数量从12k观察者减少到8k观察者,但即使在观察者数量大幅减少之后,加载时间、dom呈现或摘要周期时间也没有改善。digest cyle使用8k观察程序所需的时间与使用12k
我有完全合法的数据来源: 我将其显示在这样的表中: 现在假设我想过滤我的数组。如果我有固定的行数,我可以在< code>tr元素上使用< code>*ngIf来选择显示/不显示一个项目,但是Angular不允许在一个元素上有两个结构指令。 我知道我可以使用< code>Array.filter简单地过滤源数组,但是这样会产生一个副本,如果我的数组大得多,这可能会成为一个问题。 我想将该行嵌套在某个
问题内容: 我有一个带有一系列对象属性的对象,这些对象属性具有以下相似的结构(这是从服务返回数据的方式): 当我执行ng-repeat时,我可以遍历所有这5个对象,例如: 但是, 我真正想要做的是仅对那些不是“ foo”类型的项进行迭代 ,即3次迭代而不是5次。我知道可以以某种方式利用过滤器来执行此操作,但是我不确定如何执行。我尝试了以下方法: 但这不起作用。实际上,即使执行以下操作以将对象限制为
问题内容: 在我的控制器内部,我想过滤一个对象数组。每个对象都是一个映射,可以包含字符串和列表 我尝试使用格式,但是我不知道如何在函数中访问数组的各个元素。这是显示我想要的内容的摘要。 然后在中,我将检查每个单个属性是否匹配 我必须在控制器中完成所有这些操作,并编译一个列表列表,然后在范围内进行设置。因此,我只需要以这种方式访问。到目前为止,我在网上发现的所有示例都在函数内部进行了静态条件搜索,它
问题内容: 有没有什么好方法可以使用angular过滤列表而不使用ng- repeat?我不想首先使用javascript绘制列表,但是之后我想使用angular对其进行过滤。 例: 我想使用搜索框来过滤现有的html。 (一般请不要使用ng-repeat或jQuery给出任何示例) 问题答案: 您可以编写一个简单的指令来处理显示/隐藏: 并以这种方式使用它: 使用指令有两个好处: 1)。您不必在
我用角2,我创建一个甜甜圈图 组件的html 我想要的是将这些值作为主组件的输入进行传递。因此,假设在html上,我将该组件称为: 主HTML 组成部分js代码 因此,我的问题是如何将这些输入传递到组件的html中。