ビューを再レンダリングしないように 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 はそれを行うためのツールを提供します。