Rumah > Soal Jawab > teks badan
P粉7647859242023-08-04 00:36:22
Dengan bantuan @Jared, saya menyelesaikan masalah ini.
Saya menggunakan localStorage untuk menyimpan keadaan semasa model dan muat semula apabila mengubah hala ke halaman lain.
const Model = (function () { let instance; let data = { isLogged: false, }; function init_localStorage() { save_localStorage(); } function load_localStorage() { let model = JSON.parse(localStorage.getItem('Model')); if (Object.keys(model).length === 0) { init_localStorage(); } data = model; } function save_localStorage() { localStorage.setItem('Model', JSON.stringify(data)); } function init() { load_localStorage(); return { getIsLogged: function () { return data.isLogged; }, setIsLogged: function (l) { data.isLogged = l; }, saveData: function () { save_localStorage(); } } } return { getInstance: function () { if (! instance) { instance = init(); } return instance; } } })();
Akhirnya, saya mempunyai dua fungsi utama: simpan... dan muatkan..., yang membaca dan menyimpan data daripada objek localStorage. Seperti yang dikatakan Jared dalam ulasan, JSON tidak boleh menyelaraskan fungsi, jadi saya mencipta objek yang dipanggil data di mana saya menyimpan semua data model (seperti pembolehubah isLogged).
Sekarang, apabila saya ingin mengakses data model, saya mula-mula mendapat contoh: biarkan model = Model.getInstance(); Kemudian saya boleh mengakses kaedah daripada fungsi init yang dikembalikan. Apabila saya meminta contoh Model, ia mula-mula menyemak sama ada tika semasa telah dimulakan. Jika tidak dimulakan, ia memanggil fungsi load_localStorage untuk membaca data daripada localStorage dan menyimpannya ke pembolehubah data.
Sebelum mengubah hala ke halaman lain, saya memanggil fungsi saveData bagi contoh Model untuk menyimpan objek data ke dalam localStorage supaya halaman yang diubah hala boleh membaca keadaan yang disimpan sebelum ini.
Dalam fail HTML, saya memasukkan fail js seperti ini: <script src="./../model/model.js"></script>.
Saya pasti ada penyelesaian yang lebih baik, mungkin dengan kod yang lebih mudah dibaca, tetapi kaedah ini cukup berkesan untuk saya :)