Javascript SPA routing hashchange и обратная перезагрузка

#javascript #html #mvvm

#javascript #HTML #mvvm

Вопрос:

Итак, у меня есть свой spa, и при хэш-обмене я загружу новый HTML-файл в свой

Дело в том, что когда я нажимаю кнопку «Назад», я не хочу повторно загружать файл .html, потому что я хочу сохранить свои настройки или элементы, которые я щелкнул или изменил в моей viewmodel (я делаю MVVM).
Итак, ниже, если я нажму на функцию clickAbout, она перейдет на страницу about, но когда я вернусь к основному списку, все мои настройки будут потеряны, потому что они перезагружены. Как мне лучше всего это сделать? Я думаю, я мог бы использовать файлы cookie, или, может быть, я просто загружаю viewmodel на главную страницу.

         function clickAbout() {
            location.hash = "#about";
        }

            $(window).bind('hashchange', function (e) {
            var locationHashStr = window.location.hash.substr(1).split('amp;')[0];
            $("#divContent").load("/Content/"   locationHashStr   ".html");
        });
        $(document).ready(function () {
            if (window.location.hash) {
                var locationHashStr = window.location.hash.substr(1).split('amp;')[0]

                $("#divContent").load("/Content/"   locationHashStr   ".html");
            }
            else {

                location.hash = "#assetlist";

            }
        });
 

Ответ №1:

Вам нужно использовать pushstate.

Взгляните на https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history .