OP的注意事项:我不是在问内置的淘汰赛延迟设置,除非可以通过某种方式来实现此目的



我有一个应用程序,该应用程序已加载所有可能的屏幕并最初绑定到视图模型。视图模型上的属性之一控制用户可以看到哪些“屏幕”。

对于纯粹的病态好奇心,我想知道是否存在一种内置的或相对简单的方法来告诉敲除程序停止操作DOM的某些部分,“仅当X属性等于此值时才更新此块”。甚至更好-如果在KO中关闭了该元素的可见性,则不要操作任何子元素。

最终结果将是不可见的“屏幕”将不会更新,而视图模型上的可观察对象仍将在后台执行其操作。然后,当屏幕更改时,该新可见屏幕的DOM将被更新。

许多屏幕使用相同的可观察对象,因此我认为不经常重新操作DOM可能会提高性能-例如更新用户当前不可见的HTML列表,同时搞乱另一个屏幕上的设置。

也许性能优势可以忽略不计,因为浏览器不会重绘隐藏的元素。而且你可以告诉我很多。

如果重要的话,运行KnockoutJS3.4.x。

最佳答案

查看Knockout的控制流绑定。 ififnotwith绑定可以确定是否渲染被绑定dom节点包围的DOM元素。我认为这将是您最好的选择。

由于您不想渲染不必要的dom节点,因此不要使用可见绑定,因为它仅隐藏dom节点,但仍在DOM中渲染

关于javascript - 推迟更新DOM,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52865334/

10-15 04:37