2012-02-21 3 views
2

Я использую backbone.js, и я в ситуации, когда мне нужно знать, было ли инициировано событие маршрутизатора на загрузке страницы или если он был вызван щелчком пользователя. Есть ли способ узнать это в действии маршрутизатора?Backbone.js - Есть ли способ определить, было ли событие маршрута запущено при загрузке страницы.

ответ

0

Я не думаю, что есть способ отличить эти события. Реализация Historybone's History отслеживает изменения в URL-адресе текущего браузера и не может отличить, как был изменен URL-адрес. Скорее всего, вам нужно будет свернуть собственное решение (например, проверить записи в истории или использовать дополнительный обработчик при пользовательских кликах).

Если вы хотите отличить ваши явные вызовы от router.route, вы можете передать пользовательскую строку в качестве второго параметра, который вызовет событие 'route:yourNameHere', см. Backbone's documentation.

0

Можно также установить переменную на странице загрузки ака где-то, где вы инициализации приложения (скажем, метод инициализации маршрутизатора)

var Workspace = Backbone.Router.extend({ 
    initialize: function() { 
     var this.pageLoad = true; 
    ... 

и установить его в ложное о перемещении куда-нибудь. Вы можете прослушать события маршрута, как описано в Джулианс ответ или просто добавить строку кода, как это:

Workspace.pageLoad = false 

своим функциям маршрутизации. Вы также можете создать функцию посредника для обработки переменной и последующего вызова соответствующих маршрутов.

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