- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经看到了很多关于 ng-repeat 完成顺序的问题,与其他指令或 Angular 领域中发生的事情相比,但我一直无法找到它究竟是如何实现这一点的答案。
我有两个关于它如何工作的想法。
第一种方式:
当 ng-repeat 的 watcher 触发时,它会删除它从 DOM 中创建的所有元素,然后在它们的位置创建所有新元素,即使这些元素中有许多是相同的(例如,在将 1 个项目添加到支持数组的情况下)。
第二种方式:由于 ng-repeat 已经跟踪了哪些元素与它的后备集合中的哪些项对应,它只是删除集合中不再存在的项,并为集合中的新项创建新元素。
它是哪个,为什么?
最佳答案
这是第二种方式: Angular tries to be smart about creating/removing DOM elements :
The
ngRepeat
directive provides a way to render a collection of items given a template. To do this, AngularJS compiles the given template and then clones it for each unique item in the collection. As the collection is mutated by the Controller, AngularJS adds, removes, and updates the relevant DOM elements as needed.But, how does AngularJS know which actions to perform when? If you start to test the rendering, you'll discover that AngularJS doesn't brute force DOM creation; that is, it doesn't recreate the DOM for every rendering. Instead, it only creates a new DOM element when a completely new item has been introduced to the collection. If an existing item has been updated, AngularJS merely updates the relevant DOM properties rather than creating a new DOM node.
With this association in place, AngularJS will not $destroy and re-create DOM nodes unnecessarily. This can have a huge performance and user experience benefit.
You can also provide an optional tracking function which can be used to associate the objects in the collection with the DOM elements. If no tracking function is specified the ng-repeat associates elements by identity in the collection.
For example:
item in items track by item.id
is a typical pattern when the items come from the database. In this case the object identity does not matter. Two objects are considered equivalent as long as their id property is same.
关于angularjs - 当集合更改时,ng-repeat 是保留 DOM 元素还是创建所有新元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23766534/
我的代码 "> 我想做的是 如果外层 ng-repeat 中的 n 为 0,则 div.book_container 将如下所示: 否则,di
嗨,我有一个用于 ng-repeat-start 和 end 的简单用例,并且工作正常,当我想添加内部 ng-repeat 时出现问题。 这是我的代码 {{e}} {{obj.descr
我正在查看一长串 DNA 核苷酸,并正在寻找以起始代码“AAA”开头并以终止代码“CCC”结尾的序列。由于核苷酸以三联体形式出现,因此我找到的每个序列开始和结束之间的核苷酸数必须是三的倍数。 例如,'
我有这个: .... #{item.product.codigoProduto} #{m.description} ... listRequ
我从服务请求中返回了以下 json 数据: { "entries": [{ "id": 2081, "name": "BM", "niceNam
在 Aurelia 中嵌套 repeat.for 时,内部 repeat.for 无权访问其父 repeat.for 中使用的变量>. 示例 ${x} - ${y} 在上面的示
我有一个带有类别的对象,在这个对象内部有一个名为 items 的对象,其中包含带有 items 的对象。 现在我想重复显示这样的项目: {{cat
我有... html, body { background-size: contain; background-repeat: no-repeat; } 作为我的 CS
我的问题如下:旋转时,由重复图案组成的背景发生变化,因此图案被拉伸(stretch)而不是重复。可能有什么问题? 我有这个由重复图案组成的背景: 最佳答案 您必须手动设置重复模式: parent =
关于下面的元素 如何编辑 element.style?我想要 background-repeat : no-repeat; 不确定从哪里设置它。 element { display: blo
我有一个 Observable,我想定期重复,但仅限于以下条件: apiInterface.getData() // returns Observable ... // processing is h
我无法停止 td 元素中的图像重复。它看起来很难看。我该如何解决这个问题?我也添加了 background-repeat: no-repeat 代码,但它仍然无法正常工作。请不要建议从我的 td 宽度
我想知道以下哪个示例的效果更好。如果性能相同,哪个读起来更好? 示例 1(重复选择器) .helpfulCommenter, .questionTroll { 颜色:#f00; } .question
我正在尝试创建 tooltip对于通过 ng-repeat. 创建的表的第一行 但是工具提示没有呈现。 HTML $(document).ready(function () {
我正在开发一个页面,我需要在其中显示一些框(使用 ng-repeat ),其中包含 channel 信息以及显示位置(城市)。 我面临的问题是当我重复第二个 ng-repeat : 这应该获得第一个
我在另一个 ng-repeat 中有 ng-repeat,并且两者都有分页数据。 主要的工作正常,但 ng-repeat 内的分页数据并不总是工作。它会抛出控制台错误。 错误:[$interpolat
所以我有这个小问题。我对所有项目使用 ng-repeat,我们称它们为国家,每个项目本身都有一个 ng-repeat 作为城市等子类别。我用国家/地区填充下拉菜单。 所以我有这样的国家列表: 美国 德
我有一条从 Angular $resource promise 返回的记录,如下所示。 记录是一个数组,每个记录数组中都有另一个变量数组。我尝试在我的 View 中显示如下。 div(ng-repe
我需要使用 ng-repeat 来生成多个元素,但这些元素不能分别包装在 div 内(这是用于框布局的目的,其中框布局仅适用于直接子元素)。例如,我需要这个结果: Head 1 Body 1
我已经看到(很多)许多教程和装饰器的片段 w/和 w/o 参数,包括我认为是规范答案的两个:Decorators with arguments , python decorator arguments
我是一名优秀的程序员,十分优秀!