有没有办法告诉 Ember 不要重新渲染视图?
一个简单的用例:
我有一个动态填充的客户列表。单击列表中的客户会转到客户详细信息页面。当我单击“返回”时,我希望在客户列表中处于完全相同的位置。
通常,Ember 会重新渲染视图(当我转换到另一个状态时),我之前的位置会丢失。
有没有办法告诉 Ember 不要重新渲染视图?
一个简单的用例:
我有一个动态填充的客户列表。单击列表中的客户会转到客户详细信息页面。当我单击“返回”时,我希望在客户列表中处于完全相同的位置。
通常,Ember 会重新渲染视图(当我转换到另一个状态时),我之前的位置会丢失。
我讨厌成为坏消息的承担者,但是如果您正在导航到应用程序的不同部分,则无法停止使用 ember 重新渲染。如果它不再可见,则这些项目已从 DOM 中弹出并且不再存在。
我已经在我自己的应用程序中解决了这个问题,方法是使用 jQuery 来获取页面或对象的滚动位置。jQuery 滚动顶部。我所做的是我在模型上放置了一个存储滚动位置的位置。然后在视图上我有一个类似的东西
didInsertElement: function() {
//Restore previous scroll position
$('#item').scrollTop( this.get('model.scrollPosition') ); /* or on older ember builds `this.getPath('model.scrollPosition')` */
//Update the model with new scroll position when user scrolls
var _self = this;
$('#item').scroll(function(e){
_self.get('model').set('scrollPosition', $(this).scrollTop());
});
}
这里的关键点是视图必须重新渲染。没有停止。作为开发人员,您的工作是以可以恢复的方式保存视图所需的任何状态(滚动位置、具有焦点的元素等)。Ember 为您提供了执行此操作的工具。