编程语言
首页 > 编程语言> > javascript – AngularJS中的“track by”是什么?它是如何工作的?

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

作者:互联网

我真的不明白跟踪的工作方式和工作方式.
我的主要目标是使用ng-repeat来增加一些精度.

解决方法:

使用track by跟踪字符串&重复的值

通常,ng-repeat按项目本身跟踪每个项目.对于给定的数组objs = [‘one’,’one’,2,’five’,’string’,’foo’],ng-repeat尝试跟踪每个obj在ng-repeat =“obj in objs中的变化”.问题是我们有重复的值,而角度会抛出错误.解决这个问题的一种方法是通过其他方式对物体进行角度跟踪.对于字符串,跟踪$index是一个很好的解决方案,因为你真的没有其他方法来跟踪字符串.

跟踪&触发摘要&输入焦点

你暗示你对角度有些新意.当角度对每个观察到的属性进行详尽检查以反映对应视图的任何变化时,就会发生摘要循环;通常在摘要周期中,您的代码会修改其他监视的属性,因此需要再次执行该过程,直到angular检测到更多更改为止.

例如:您单击按钮以通过ng-click更新模型,然后执行某些操作(我的意思是,您在回调中编写的内容在用户单击时执行),然后角度触发器摘要周期以便刷新风景.我在解释这一点时并不太明确,所以如果不澄清事情,你应该进一步调查.

所以回到追踪.我们来举个例子:

>调用服务以返回对象数组
>更新数组中的对象并保存对象
>保存服务后,根据API返回的内容,您可以:

>替换整个对象或
>更新现有对象的值

>反映ng-repeat UI的变化

跟踪此对象的方式将决定UI如何反映更改.

我遇到过的最烦人的用户体验之一就是这个.假设您有一个对象表,每个单元格都有一个输入,您可以在其中对这些对象的属性进行内联编辑.我想更改值,然后在模糊,保存该对象,同时移动到下一个要编辑的单元格,同时您可能正在等待响应.所以这是一个自动保存类型的东西.根据您设置track by语句的方式,当响应被写回到对象数组中时,您可能会失去当前焦点(例如,当前正在编辑的字段).

标签:javascript,angularjs,ng-repeat,angularjs-track-by
来源: https://codeday.me/bug/20191001/1838194.html