问题标签 [angularjs-track-by]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
62 浏览

javascript - 在没有过滤器的情况下捕获重复项并在 ng-repeat 的跟踪中忽略它们(AngularJS)

我在使用 ng-repeat 和 track by 时遇到了一些问题,因为有时会出现重复数据(同一用户),因为在将新条目推送到开头之后,用户在日期排序列表(API 端)中被下推大批。

我想知道是否可以做类似(伪代码)的事情

0 投票
5 回答
151634 浏览

angular - 如何将 `trackBy` 与 `ngFor` 一起使用

我真的不明白我应该从什么返回trackBy。根据我在网上看到的一些示例,我应该返回对象上某些属性的值。这样对吗?为什么我应该得到index一个参数?

例如,在以下情况下:

组件.component.ts

组件.template.html

尽管名称未更改,但此模板中显示的对象仍会更新。为什么?

0 投票
2 回答
478 浏览

angularjs - Angular 2 *ngfor 不会随着连续的 http 请求响应而更新

我有一个名为 rows 的空数组,我想用 *ngFor 显示它。在数组的每一行上,我传递来自 http 请求的响应。所有的http请求都是按顺序调用的。即使正确输入了数组,*ngFor 也永远不会更新。我想在收到请求响应时按顺序显示每一行。

0 投票
0 回答
520 浏览

javascript - Angularjs 何时在 ng-options 指令中使用 track-by 而不是 select-as

我想知道在 ng-options 指令中建议在哪些情况下使用track by over select ?

在这里,我们有两个选择:

我们可以看到html结果是一样的:

要像我们必须做的那样使用 select 选择一个项目:

要选择带有track by的项目,我们必须执行以下操作:

大多数时候,我只能访问项目 ID,或者只是使用项目 ID 比使用整个对象更容易。所以我总是更喜欢使用select as over track by

您知道在哪种情况下跟踪是更可取的选择吗?

0 投票
1 回答
24376 浏览

angular - Angular 4 - Reactive Forms - 从列表中未引用的对象中选择列表中的项目 - trackby 问题?

我正在将 Angular 1.6 代码转换为 Angular 4,但我对元素列表有疑问。Angular 1.6 中的代码是:

我的列表中没有引用对象级别,因为此列表是使用对象 referentiel.levels 加载的。但是我的列表元素和我的对象级别之间的匹配是通过 trackby 完成的。因此,当我的对象级别加载时,该元素在列表中被选中。

现在,我尝试使用 Reactive Forms 转换此代码。在我的 HTML 代码中,我有:

在我的组件中,我有 OnInit 方法:

方法识别很简单:

但说法不一样。当我使用我的对象级别设置控件的值时,未选择列表中具有相同 id 的项目。

我找到了解决方案,但我不明白为什么它不起作用。我的解决方法是用 HTML 编写这段代码:

在我的打字稿文件中:

所以,现在它正在工作:我的项目在列表中被选中。

在这种情况下,我不明白 Angular 的两个版本之间的区别。也许我错过了什么……

谢谢你的帮助。

0 投票
1 回答
441 浏览

angularjs - Angular Materials md-select 和 trackBy 允许选择选项

我正在尝试根据我的需要自定义这个 Angular Material 示例代码(https://material.angularjs.org/latest/api/directive/mdSelect)。

我有三组选择选项。如果在组中选择了一个选项,则应取消选择其他组中的所有选项(但将其他选项保留在自己的组中)。

在我的代码中,我设法使逻辑正常工作(正如您将从底部的 console.log 输出中看到的那样),但实际的选择选项不会与用户输入交互。

我的 JSFiddle:https ://jsfiddle.net/e2LLLxnb/8/

我的 JS 代码:

0 投票
2 回答
607 浏览

html - 用 track by 复制 ng-repeat

如何允许在 ng-repeat 中使用 track by 重复并从控制器更新 ng-repeat 列表?

通过 $index 使用 track 我无法更新范围变量,但我想允许 ng-repeat 中的重复对象

条件:1)允许在 ng-repeat 中重复 2)使用 track by 3)从控制器更新 ng-repeat 列表

HTML

控制器

0 投票
2 回答
3469 浏览

angular - 具有自定义参数的 ngFor trackBy 函数

trackBy 函数(例如在 ngFor 中)提供了两个参数:index 和 item(来自被迭代的集合)。有没有办法将附加信息(作为参数?)传递给 trackBy 函数?

我的情况是,我可能会为我的组件的每个实例(包含 ngFor)迭代各种类型,并使用不同的标识字段名称。理想情况下,我希望能够传递第三个参数,指示应该读取我的项目中的哪个字段。

0 投票
1 回答
150 浏览

angularjs - Track by 不适用于 ng-repeat 和 ng-value

我想要的只是启动多选下拉菜单,this.data并在用户进行任何更改时返回对象的更新数组。

问题:未启动多选下拉菜单,这意味着未根据提供的模型选择下拉选项。

0 投票
1 回答
5760 浏览

angular - Angular - 实施 trackBy 的意义何在?

从最近开始,当您没有在每个 *ngFor 上实现 trackBy-function 时,Angular styleguide-lint-extender“Codelyzer”会发出警告。我想知道为什么这被认为是一个问题。

  • 在此博客中,实现 trackBy 的示例归结为trackByFn(index, item) { return index;} // or item.id. 如果我从 index 切换到 item.id,这将如何使我的应用程序更快?当涉及到数组插入或删除时,索引是最直接的事情。为什么 [ngFor] 指令应该比较对象标识值?
  • 在模块 ng_for_of.d.ts 我可以找到_trackByFn. 所以我假设,return index-trackBy 无论如何都是默认配置?那么为什么明确地实施它被认为是一种好习惯呢?

现在就个人而言,我的应用程序中确实有一个大集合(数组),它位于 redux 商店中。它只能被一个空数组替换,或者可以添加新项目,例如:

return {...state, myArray: [...state.myArray, ...newItems]}),

但从未移动或删除。item.id对我来说跟踪而不是有意义index吗?我真的应该return index;在每个带有 *ngFor 的组件中实现一个 -function 吗?