ในที่สุดฉันก็ได้รับสิ่งที่ฉันต้องการ
ฉันต้องการเลื่อนไปด้านบน แต่ไม่ต้องการการเปลี่ยนบางอย่าง
คุณสามารถควบคุมสิ่งนี้ได้ในระดับเส้นทางตามเส้นทาง
ฉันกำลังรวมโซลูชันข้างต้นโดย @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!
})