问题标签 [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.
javascript - 在没有过滤器的情况下捕获重复项并在 ng-repeat 的跟踪中忽略它们(AngularJS)
我在使用 ng-repeat 和 track by 时遇到了一些问题,因为有时会出现重复数据(同一用户),因为在将新条目推送到开头之后,用户在日期排序列表(API 端)中被下推大批。
我想知道是否可以做类似(伪代码)的事情
angular - 如何将 `trackBy` 与 `ngFor` 一起使用
我真的不明白我应该从什么返回trackBy
。根据我在网上看到的一些示例,我应该返回对象上某些属性的值。这样对吗?为什么我应该得到index
一个参数?
例如,在以下情况下:
组件.component.ts
组件.template.html
尽管名称未更改,但此模板中显示的对象仍会更新。为什么?
angularjs - Angular 2 *ngfor 不会随着连续的 http 请求响应而更新
我有一个名为 rows 的空数组,我想用 *ngFor 显示它。在数组的每一行上,我传递来自 http 请求的响应。所有的http请求都是按顺序调用的。即使正确输入了数组,*ngFor 也永远不会更新。我想在收到请求响应时按顺序显示每一行。
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。
您知道在哪种情况下跟踪是更可取的选择吗?
angular - Angular 4 - Reactive Forms - 从列表中未引用的对象中选择列表中的项目 - trackby 问题?
我正在将 Angular 1.6 代码转换为 Angular 4,但我对元素列表有疑问。Angular 1.6 中的代码是:
我的列表中没有引用对象级别,因为此列表是使用对象 referentiel.levels 加载的。但是我的列表元素和我的对象级别之间的匹配是通过 trackby 完成的。因此,当我的对象级别加载时,该元素在列表中被选中。
现在,我尝试使用 Reactive Forms 转换此代码。在我的 HTML 代码中,我有:
在我的组件中,我有 OnInit 方法:
方法识别很简单:
但说法不一样。当我使用我的对象级别设置控件的值时,未选择列表中具有相同 id 的项目。
我找到了解决方案,但我不明白为什么它不起作用。我的解决方法是用 HTML 编写这段代码:
在我的打字稿文件中:
所以,现在它正在工作:我的项目在列表中被选中。
在这种情况下,我不明白 Angular 的两个版本之间的区别。也许我错过了什么……
谢谢你的帮助。
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 代码:
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
控制器
angular - 具有自定义参数的 ngFor trackBy 函数
trackBy 函数(例如在 ngFor 中)提供了两个参数:index 和 item(来自被迭代的集合)。有没有办法将附加信息(作为参数?)传递给 trackBy 函数?
我的情况是,我可能会为我的组件的每个实例(包含 ngFor)迭代各种类型,并使用不同的标识字段名称。理想情况下,我希望能够传递第三个参数,指示应该读取我的项目中的哪个字段。
angularjs - Track by 不适用于 ng-repeat 和 ng-value
我想要的只是启动多选下拉菜单,this.data
并在用户进行任何更改时返回对象的更新数组。
问题:未启动多选下拉菜单,这意味着未根据提供的模型选择下拉选项。
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 吗?