Backbone.js и ведущий хэш

У меня есть следующая проблема. Некоторая часть моего приложения Backbone имеет URL-адрес, например:

site.ru/#profile

Когда страница загружается, URL изменяется на:

site.ru/profile

Итак, хэш был потерян. Итак, я вижу проблему в навигации по функции Backbone:

var routeStripper = /^[#\/]/;
...
var frag = (fragment || '').replace(routeStripper, '');

Как я понимаю, этот код очищает хэш в начале URL-адреса.

Действительно ли это просто удалить эту строку кода, чтобы исправить эту проблему? Не могли бы вы посоветовать мне другие способы исправить это.

ТИА!

Ответ 1

Магистраль удаляет хеш только при включении pushState.

Измените Backbone.history.start({pushState: true}); на Backbone.history.start();

http://backbonejs.org/#Router

Ответ 2

Похоже, что Backbone.js использует / и # как разделители, чтобы вытащить корневой адрес и подкаталоги. Фильтрация / требует tp stau tp получить "фрагмент". Попробуйте просто удалить # в этом RegEx, но оставите остальную часть строки там. (& оставить комментарий в коде, который вы сделали так!:)

Я также отправлю отчет об ошибке, так как он пересылает ссылку без хеша.

Ответ 3

Имея ту же проблему и некоторые другие с нами;-) (см. проблема GitHub)

Я исправил это пока, не слушая изменения хэша, например:

Backbone.history.start({
  pushState: true,
  hashChange: false,
  root: '/'
});

Казалось, это сработало для меня.