やっと必要なものが手に入りました。
私は一番上までスクロールする必要がありましたが、
これはルートごとのレベルで制御できます。
@wkonkelによる上記のソリューションを組み合わせて、単純なnoScroll: true
いくつかのルート宣言にパラメーターをます。それから私は移行でそれをキャッチしています。
全体として、これは新しいトランジションではページの上部にフロートし、Forward
/ Back
トランジションではページの上部にフロートせず、必要に応じてこの動作をオーバーライドできます。
コード:(前のソリューションと追加のnoScrollオプション)
// hack to scroll to top when navigating to new URLS but not back/forward
let wrap = function(method) {
let orig = $window.window.history[method];
$window.window.history[method] = function() {
let retval = orig.apply(this, Array.prototype.slice.call(arguments));
if($state.current && $state.current.noScroll) {
return retval;
}
$anchorScroll();
return retval;
};
};
wrap('pushState');
wrap('replaceState');
それをあなたのapp.run
ブロックに入れて注入してください$state
...myApp.run(function($state){...})
次に、ページの一番上までスクロールしたくない場合は、次のようなルートを作成します。
.state('someState', {
parent: 'someParent',
url: 'someUrl',
noScroll : true // Notice this parameter here!
})