Javascript-форум (https://javascript.ru/forum/)
-   Backbone.js (https://javascript.ru/forum/backbone/)
-   -   Не работает кнопка "Назад" в браузере. История URL. Backbone. (https://javascript.ru/forum/backbone/56046-ne-rabotaet-knopka-nazad-v-brauzere-istoriya-url-backbone.html)

vertigo 27.05.2015 12:51

Не работает кнопка "Назад" в браузере. История URL. Backbone.
 
Всем привет,

у меня имеется одна страница, с которой можно осуществить переход на другую страницу с передачей параметров (&paramone=val&paramtwo=val....).

Конечная страница, получив набор НЕОБХОДИМЫХ параметров с нужными значениями, дополняет URL недостающими параметрами, которые устанавливаются в дефолтное значение.

Например, я точно хочу вывести все продукты производителя Apple. В этом случае я передаю:

Код:

?manufacturer=apple.
Получив этот линк, конечная страница дополняет строку еще и, например, цветов и типом устройства, получая на выходе:

Код:

?manufacturer=apple&color=black&type=player.
Проблема в том, что мне надо как-нибудь подменить в истории изначальную ссылку вида:

Код:

site.com?param=val
на конечную полную ссылку, вида:

Код:

site.com?param=val&param=val&param=val
затем, чтобы заработала кнопка "Назад". Сейчас она не работает - оно и понятно. Ведь сначала в историю попадает запись с одним набором параметров, потом дополняется уже другим.

Всё это необходимо сделать средствами backbone.

Предугадывая вопрос, говорю: нет, я не хочу просто формировать сразу нормальную полную ссылку - количество параметров может меняться и лезть каждый раз в код не очень хочется. А хочется универсальное решение, при котором я открываю страницу с нужными параметрами, линк дополняется оставшимися, а в истории я имею одну запись и одним кликом могу вернуться на предыдущую страницу.

В описании к backbone я нашел Backbone.history.navigate(url,{replace: true}), которое вроде бы должно подойти, однако конечный линк формируется неверно и имеет вид аля:

Код:

site.com/http:site.com?param=val&...

timfcsm 21.06.2015 02:44

просто не надо передавать хост в url... и если у replace стоит true, в историю этот переход не сохранится


Часовой пояс GMT +3, время: 09:23.