Routing.navigate против document.location.hash

Я создал веб-приложение, используя backbone.marionette. Когда из Marionette.ItemView я запускаю событие document.location.hash:

 document.location.hash = '#tasks/' + this.model.get('id');

1.a) изменяет URL-адрес 1.b) запускает appRoutes

Если я запускаю Routing.navigate из того же места:

router.navigate('#tasks/' + this.model.get('id'))

2.a) он изменяет URL-адрес, как и ожидалось 2.b) он не запускает appRoutes.

Есть идеи, почему происходит 2.b? Где может быть проблема?

Спасибо.

var Router = Marionette.AppRouter.extend({
    appRoutes: {
        'tasks': 'tasks',
        'tasks/:id': 'taskDetail',
        '*defaults': 'tasks'
    }
});

person Lorraine Bernard    schedule 30.06.2012    source источник


Ответы (1)


Вам нужно добавить {trigger: true}

router.navigate('#tasks/' + this.model.get('id'), {trigger: true})

Обычно я расширяю маршрутизатор, а затем добавляю свою собственную навигацию, которая автоматически добавляет {trigger: true}. Я понимаю, почему разработчики сделали это так, но я никогда не использовал это так :)

person Stephen    schedule 30.06.2012
comment
Спасибо, на самом деле этот вопрос связан с этим: Круговые зависимости для веб-приложения с использованием backbone.marionette и requireJs. И я хотел бы знать, как я могу достичь той же цели, поднимая события. - person Lorraine Bernard; 30.06.2012