防止视图重新渲染

时间:2012-09-08 00:30:17

标签: ember.js

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

一个简单的用例:

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

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

1 个答案:

答案 0 :(得分:1)

我不想成为坏消息的承载者,但是如果您导航到应用程序的不同部分,则无法停止使用ember重新渲染。如果它不再可见,则项目已从DOM中弹出,不再存在。

我通过使用jQuery获取页面或对象的滚动位置,在我自己的应用程序中解决了这个问题。 jQuery Scroll Top。我做的是我在模型上有一个存储滚动位置的位置。然后在视图中我有类似

的东西
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为您提供了工具。