问题标签 [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 投票
2 回答
1407 浏览

angularjs - $index 的 ng-repeat 跟踪不适用于分页

我正在使用 ng-repeat + Filter + Pagination(ui-bootstrap)

1- ng-repeat + 过滤器工作正常:

2- ng-repeat + filter + pagination 也可以正常工作:

3-问题是当我结合 ng-repeat + Filter + Pagination + track by $index

我的索引值在每页中从 0 重新开始到 4

这是我的桌子的屏幕截图

关于“track by $index”正确顺序的任何想法!我应该把它放在哪里?

0 投票
3 回答
404 浏览

angularjs - AngularJS ngOptions track by 不会将整个对象设置为 ngModel

这是我的 json 对象:

我给选择为:

Now when an option is chosen i want another select which iterates upon ngModelof previous select. 下一个看起来像:

当我手动选择选项时它工作正常但是当它们是$scope.dashboard.type.name = 'qwe'我的脚本中的dashboard.type(例如:)中的值时,它用于track by选择选项并将其保存在dashboard.type,而不是保存整个对象它只是保存使用的值在track by选项中。

仪表板的值。类型:

  1. 当我手动选择选项时: {"name":"qwe","field":["a","b","c","d","f"],"id":3}
  2. 当使用 track by 时: {"name":"qwe"}

注意:我不能使用track by item. 它必须是对象的属性item。它可以是nameid

这是一个plnkr

编辑 :

正如许多人所指出的,我想澄清一下,我不能将对象初始化为todos列表的任何值。这是因为dashboard.type.name每次值都会不同,并且todos列表的对象数量从 10 到 100 不等。现在我必须迭代列表todos检查是否todos[index].name==someName并分配相关对象。我正在积极尝试避免这种解决方案(因为必须有更好的方法)。

注意: 我也尝试使用ng-change并将实际对象分配给dashboard.type.name但仅在手动选择选项时才有效,这似乎已经正常工作。使用时不分配对象track by

重要: $scope.dashboard.type.name = 'qwe'只是一个例子。的值$scope.dashboard.type.name可能会在每次加载页面时发生变化。

PS:我也应该早点提到这个。对不起,我的错!

0 投票
1 回答
745 浏览

javascript - 在嵌套的 ng-repeat 中推送到数组

在上面的示例中,您可以看到 {{form}} 的输出,我需要将mil in milestone_subindicator要推送的值放入 form 中的里程碑数组中。我不知道我该如何实现?

帮助将不胜感激:)

0 投票
4 回答
40425 浏览

javascript - AngularJS 中的“track by”是什么,它是如何工作的?

我真的不明白它是如何track by工作的以及它做了什么。
我的主要目标是使用它ng-repeat来增加一些精度。

0 投票
1 回答
254 浏览

angularjs - 角度选择 'track by' 重置选择

我正在努力让“选择”与 Angular 选择元素的“track by”一起工作。我有以下选择:

用这个js:

当我摆脱“按键跟踪”时,上面的 js 起作用 - 初始选择被预设。使用“按键跟踪”,预选是空白的。我需要“按键跟踪”来获取选定的值,这是迄今为止唯一有效的方法。到目前为止,我已经尝试过以下组合,但没有成功:

我将非常感谢这里的一些帮助,让它发挥作用。谢谢你。

0 投票
1 回答
645 浏览

javascript - 当使用 $index 跟踪时,ng-init 没有第二次调用

html:

控制器:

ng-inittr 初始化时第一次调用的函数。如果我单击更改按钮行集合被更改并且它不会ng-init再次调用。$index ng-init如果我通过两次调用来删除轨道。当我使用 track by$index它时,它只被调用了一次。为什么会这样?关于这个的任何想法。

0 投票
2 回答
1531 浏览

angularjs - 如何重置 AngularJS 中的选择列表并跟踪?

我有一个选择列表。

我重置列表

什么都没发生。AngularJS 1.5.8

0 投票
1 回答
3612 浏览

angular - ngFor trackBy 仍然重新渲染 DOM?

我在我的 ngFor 中激活了 trackBy 并确认它已被调用并且正在工作,但我仍然注意到 DOM 在我的浏览器中重新呈现,这导致行闪烁。这里发生了什么?在 Angular1 中,我可以在我的浏览器/chrome 调试器中看到,当使用 item.id 跟踪并且没有发生闪烁时,DOM 没有更新/替换,为什么在 angular2 中不是这种情况。我的代码中是否存在一些错误,或者是否发生了一些我不知道实际上做了好事的事情?

编辑 我跟踪错误在我的 API 服务中的 observable 中导致了这个,但仍然不知道为什么。

解决方案

解决了使用相同的可观察 this.items 而不是每次重新加载新数据时都用新的替换它。

0 投票
0 回答
32 浏览

javascript - 动态模型的角度绑定字段修改对象中的所有值

所以我有这段代码:

这以“当前活动”附加元素为目标。但是每当我使用它时,它也会修改具有相同属性的其他附加元素,即使这些元素中的每一个都具有分配给它们的唯一键。

看这里的图片

然后我用一个新的密钥推送这个数据集。

所以例如我有两个“表”键,它看起来像

0 投票
2 回答
58 浏览

angularjs - Angular v1.4重复一个div而不重新渲染已经渲染的项目

我编写了代码来重复一个图像数组和一个加载更多按钮来 ajax 请求并在该数组中推送响应图像。但是每次有新的响应出现时,整个图像都会重新洗牌。

在我的控制器代码中:

每次服务器发送三个图像。以前我没有track by $index从我添加的这个 SO answartrack by $index中使用,但没有运气。

我认为 angular 正在重新渲染整个数组。如果是这样,我怎样才能停止这种重新渲染?