4

有没有办法告诉 Ember 不要重新渲染视图?

一个简单的用例:

我有一个动态填充的客户列表。单击列表中的客户会转到客户详细信息页面。当我单击“返回”时,我希望在客户列表中处于完全相同的位置。

通常,Ember 会重新渲染视图(当我转换到另一个状态时),我之前的位置会丢失。

4

1 回答 1

1

我讨厌成为坏消息的承担者,但是如果您正在导航到应用程序的不同部分,则无法停止使用 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 为您提供了执行此操作的工具。

于 2012-12-21T04:04:59.087 回答