Какую библиотеку JavaScript hashchange / history мне следует использовать сегодня (2011)? - PullRequest
0 голосов
/ 14 октября 2011

1) Какой хэш-обмен / библиотеку истории / метода JavaScript следует использовать для моего приложения JavaScript?
2) И как мне достичь этих трех вещей, используя этот метод?

A) Когда страница загружается, я хочу проанализировать хэш / параметры URL-адреса и установить начальное состояние приложения.
В частности, мое приложение состоит из Backbone Collection с двумя моделями, имеющими такие атрибуты, как selectedCountry, selectedYear и т. Д.
(Я не думаю, что смогу использовать Backbone.Router, так как это очень индивидуальное приложение для визуализации со сложными состояниями?)

B) Я хочу настроить прослушиватель hashchange или аналогичный, который позволяет мне соответствующим образом обновлять состояние приложения

C) При изменении событий в Backbone Collection я хотел бы обновить URL. Важное замечание: Я хочу временно удалить прослушиватель hashchange, чтобы не было обратной связи.

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

Спасибо:)

1 Ответ

3 голосов
/ 14 октября 2011

, поскольку вы уже используете Backbone, я бы придерживался объектов Router Backbone.Будет проще использовать то, что уже доступно в вашем приложении, вместо того, чтобы пытаться внести что-то новое в микс.

Что касается вашей проблемы с обратной связью, я решил это с помощью , никогда не применяя методы маршрутизатораиз кода .

Суть в том, что я позволяю своим JavaScript-объектам контролировать состояние приложения и выполняю работу за меня.Когда я звоню router.navigate, я никогда не передаю true в качестве второго аргумента.Я вызываю router.navigate только в ответ на изменение состояния в моем приложении, чтобы обновить фрагмент хеша в окне моего браузера.Вот в чем дело: это просто ответ на изменение состояния приложения.Я никогда не использую router.navigate для изменения состояния моего приложения.

Надеюсь, это поможет

...