2012-03-29 7 views
8

Моя текущая заявка цепь имеет URL:Обновите BackboneJS на том же URL-адресе хэша?

localhost/#users 

Есть ли способ получить доступ к localhost/#users в то URL localhost/#users поэтому обновляет страницу?

В настоящее время, когда я нахожусь в localhost/#users и я стараюсь

window.location.hash = #users или myBackboneRouter.navigate("users")

это не вызывает обновления страницы.

+1

Почему вы хотите, чтобы перезагрузить страницу, что пользователь уже? –

+1

У меня есть привязки ajax, которые я хочу запустить снова на одной странице. – kidcapital

+0

Не уверен, что я следую тому, что вы подразумеваете под «ajax bindings», но можете ли вы просто сделать функцию для их повторного вызова, а затем вызвать эту функцию вместо маршрутизации? Кажется довольно тяжелым, чтобы повторно отобразить всю страницу, чтобы обновить некоторую меньшую ее часть. –

ответ

6

Думаю, myBackboneRouter.navigate("users", {trigger: true}) сделает все, что пожелает.

+0

Я пробовал это, но он все равно не вызовет его :( – kidcapital

+8

Ah okay. Да, я вижу 'if (this.fragment == frag) return;' в функции навигации, поэтому я думаю, что это просто короткое замыкание процесса перед тем, как триггер заставит его вызывать маршрут.Если вы просто хотите, чтобы он запускал код, который запускается, когда вы приземляетесь на этот маршрут, просто вручную вызовите функцию, с которой маршрутизатор маршрутизирует этот хэш. Например, если ваш маршрутизатор имеет «маршруты» : {'users': 'users'} ', тогда вы можете просто вызвать' myBackboneRouter.users(); 'вам не нужно называть навигацию. – heavi5ide

+0

да, это ответ, который я искал. thanks – kidcapital

-1

Почему бы не использовать

window.location.reload(); 

Либо это, либо вспомнить свой вид визуализации() функция ..

+1

Проблема с окном.locat ion.reload() заключается в том, что он перезагружает всю страницу. Это нежелательно, если вы хотите, чтобы ваш маршрутизатор Backbone контролировал то, что повторно отображается, без необходимости перезагрузки всей страницы. – NoBrainer

35

Чтобы обновить одну страницу в позвоночнике, вы должны использовать

Backbone.history.loadUrl(Backbone.history.fragment); 
+0

Это действительно работает. – Van

+1

, на какую часть нужно поставить этот код .. ?? – boycod3

+0

Падает на этот! Он мягко перезагружается без полной перезагрузки страницы, в отличие от 'window.location.reload()'. – Kafoso

2

Я использую эти три строки кодов для перезагрузки моей базовой страницы:

router.navigate(Backbone.history.fragment, true); 
Backbone.history.loadUrl(Backbone.history.fragment); 
router.refresh(true); 

ИЛИ Просто

Backbone.history.loadUrl(Backbone.history.fragment); 
+0

Куда мне нужно положить это в мой маршрутизатор? В любом маршруте/когда маршрут создается или где-то еще? – Anna