angularjs - 在 Angular.JS 中缓存 DOM

标签 angularjs

我正在使用 Angular.JS 中的路由器(使用内置路由器,现在使用 ui-route 但两者的解决方案都很好)在控件/模板对之间切换。在这些页面之间来回切换时,每次设置 DOM 最多需要一秒钟,这看起来很糟糕。无论如何,是否有 Angular 保持 DOM 树,而不是每次都重新创建它。我想我只想隐藏/播种每个页面的位,而不是每次都删除/重新创建它们。

欢迎任何建议!

最佳答案

您必须编写自己的 ng-view 指令来创建此类功能。

其背后的基本思想是:

在路由更改之前,您只需将其放入一个不可见的缓存 DIV 中,并取消注册范围监听器,而不是销毁当前的 View 元素和范围。使用 $$route.templateUrl 为元素赋予数据属性能够取回它。
然后从服务器获取下一个 View 。

在路由更改之前,您检查缓存项是否存在,如果它在您的缓存 div 中,则从缓存中获取元素,重新注册监听器并将当前 View 放入缓存。

棘手的部分是不要弄乱 $scope起来。因此,您的 $scope 中可能需要一个构造函数和析构函数。为了这个事件,也许也为了 $watchers。我不知道。

但老实说,如果你使用模板缓存,仍然需要 1 秒左右的时间来渲染,那么你可能会有些低效 $watch表情,还是巨大的ng-repeat .你应该考虑一些refact。

关于angularjs - 在 Angular.JS 中缓存 DOM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16695926/

相关文章:

angularjs - Outlook 应用程序 - ADAL 身份验证 - AADSTS90056 : This endpoint only accepts POST requests

javascript - 如何知道angular完成了所有的处理和渲染

javascript - 加载 Angular 谷歌地图时无法在 'write' 错误上执行 'Document'

javascript - 如何将数据从模型发送到屏幕?

javascript - Controller 数据中的复选框 ng-Repeat 未渲染 : AngularJs

angularjs - Kendo UI 指令要求 jQuery 在 AngularJS 之前可用。请在文档中的 angular 之前包含 jquery

javascript - Angular 遍历选择选项并设置选定值

html - Chrome & Edge 和 Firefox 中的 ng-repeat 和按钮间距

javascript - 当我的查询结果 rowCount 为 0 时,如何检查 Node js 中的响应抛出错误

javascript - sails.js:如何查找模型内的项目?