我正在使用路由器(正在使用内置的一个,现在使用ui-route,但是解决方案都可以)在Angular.JS中在控件/模板对之间切换。当在这些页面之间来回切换时,每次看起来很糟糕的时候,建立DOM需要一秒钟的时间。有没有任何角度保持在DOM树周围,而不是每次重新创建它。我想我只想隐藏/播放每个页面的位,而不是每次删除/重新创建它们。
欢迎任何建议!
您必须编写自己的ng-view命令来创建这样的功能。
背后的基本思路是:
在路由更改之前,不要摧毁当前视图元素和作用域,您只需将其放在一个不可见的缓存DIV中,并注销范围侦听器。给元素一个数据属性与$$ route.templateUrl能够得到它。
然后您从服务器获取下一个视图。
在路由更改之前,请检查缓存项目是否存在,并且如果在缓存区中,从缓存中获取元素,请重新注册侦听器并将当前视图放在缓存中。
棘手的部分不是让$ scopes上升。因此,您可能需要在$范围内为事件创建一个构造函数和析构函数,也可能需要$ watchers。我不确定。
但是说实话,如果你使用模板缓存并且还需要1秒钟的时间来渲染,那么你可能会有一些效率低下的watch表达式,或者是巨大的ng重复。你应该考虑一些反应。