Путь к такому же маршруту

Есть ли способ запуска такого же маршрута местоположения в backbone.js, например, когда местоположение /My/App/#/About, и пользователь снова нажимает на якорь с тем же самым маршрутом, чтобы обновить содержимое страницы.

Ответы

Ответ 1

Router.navigate('about', true);

Таким образом вы можете вручную запустить маршрут.

Ответ 2

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

Решение для вашей конкретной проблемы на самом деле не задокументировано, и кажется, что предлагаемая наилучшая практика состоит в том, чтобы просто вызвать функцию, объявленную на маршруте, который вы хотите запустить:/

Ссылка: https://github.com/documentcloud/backbone/issues/1214

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

Ответ 3

Предполагая, что вы хотите сделать это не только на странице About, используйте:

route = Backbone.history.fragment;
yourRouter.navigate(route, true);

Ответ 4

Поскольку маршрутизатор Backbone ищет изменения в фрагменте URL, который вы хотите загрузить, то для меня работало, чтобы перейти к '/' сначала без триггера, а затем к URL (фрагменту), который вы хотите нажать с помощью триггера, Вероятно, вы могли бы легко создать это в поведение маршрутизатора по умолчанию, если хотите.

например.

App.Routers.appRouter.navigate '/', {trigger: false}
App.Routers.appRouter.navigate myPath, {trigger: true}

Ответ 6

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

$("[data-href]").on("click", function(e) {
  var href;
  e.preventDefault();
  href = $(e.currentTarget).data("href");
  if ((_.last(this.history)) === href) {
    return Backbone.history.loadUrl(_.last(this.history));
  } else {
    return this.router.navigate(href, true);
  }
});

Ответ 7

Другой вариант: вы можете добавить параметр со случайным значением, поэтому хеш будет отличаться для каждого вызова, даже если вы вызываете одну и ту же страницу.

Ответ 8

router.navigate(route, {trigger: false});//Изменяет URL, но он не будет запускаться... Ex: Вместо маршрута - 'about/1' или ' about 'и т.д.

Backbone.history.loadUrl(Backbone.history.fragment);//Здесь будет запущен измененный маршрут.