2015-11-23 2 views
0

Я использую route.navigate() для запуска маршрутов в моем приложении с отключением pushState. . При срабатывании маршрута по умолчанию (router.navigate('', { trigger: true }), страница прокручивается в верхнюю часть, как если бы регулярна # ссылка была соблюденаПеремещение по маршруту по умолчанию ('') вызывает прокрутку страницы

Вы можете увидеть это в действии здесь:

https://jsfiddle.net/k58tstas/

От чтения Backbone источник, он использует window.location.hash обновить URL, и когда это установлено в '' это приводит к '#' и вызывает прокрутку переход к этому корневому якорю.

быстро, грязный раствора иметь именованный маршрут для по умолчанию и использовать это, но есть ли лучший способ отключить эту функцию?

ответ

-1

Попробуйте разместить Backbone.history.start(); перед созданием объекта маршрутизатора.

$(function() { 
    Backbone.history.start(); 
    window.router = new Router(); 

    $('.js-root').on('click', function(e) { 
     e.preventDefault(); 

     window.router.navigate('', { trigger: true }); 
    }); 

    $('.js-queenslanders').on('click', function(e) { 
     e.preventDefault(); 

     window.router.navigate('queenslanders', { trigger: true }); 
    });  
}); 
+0

Извините @pushkar, это не имеет никакого значения. –

1

Если запустить маршрутизатор с опцией pushState

Backbone.history.start({ pushState: true }); 

вопрос уйдет (за исключением некоторых старых браузеров). Я понимаю, что вы приняли сознательное решение оставить его, но, к сожалению, из того, что я смог собрать, включение его - единственный способ подавить это поведение.

+0

Это решение проблемы, для поддерживающих браузеров pushState. Который должен быть всем, о чем мы заботимся, но, к сожалению, не в этом конкретном проекте! –

Смежные вопросы