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 に答える