gpt4 book ai didi

javascript - DurandalJS : Keeping data across a session

转载 作者:行者123 更新时间:2023-11-30 17:31:06 25 4
gpt4 key购买 nike

我已决定为我的 AJAX 请求、模型和数据数组创建一个名为“controllers”的单独文件夹,这样如果我需要在多个页面上执行相同的请求,我就不必重复我的代码。

例如,在“app/page1/index.html”上,我有一个所有用户的列表:

<ul data-bind="foreach: { data: usersArr }">
<li data-bind="text: full_name"></li>
</ul>

我需要 page1 的 View 模型中的用户 Controller ,然后通过它加载数据:

define(['jquery', 'knockout', 'controllers/user/index'], function ($, ko, User) {
var Page1 = function() {
this.usersArr = User.usersArr;
};

Page1.prototype.activate = function() {
User.getUsers();
};

return Page1;
});

这是用户 Controller :

define(['knockout', './models',], function (ko, Model) {
var UserController = function() {
this.usersArr = ko.observableArray();
};

// inherit
UserController.prototype.Model = new Model();

UserController.prototype.getUsers = function () {
// ajax goes here, data comes back,
// put it through the Model and then save it to usersArr();
};

UserController.prototype.addUser = function () { ... };
UserController.prototype.removeUser = function () { ... };

return new UserController();
});

请注意,我将 Controller 作为对象返回。我这样做是为了让它留在内存中,我可以在其他页面上重用代码(尤其是带有存储数据的可观察数组)。现在,如果我创建一个“page2”并需要相同的列表,用户将已经加载到 usersArr 可观察数组中。

我有多个像这样的 Controller ,应用程序将在整个 session 期间使用这些 Controller 。我只是想知道这种方法是否有任何缺点,例如应用程序速度变慢或我可能遇到的任何其他问题。我也很想知道你们是否有不同的方法来跨 session 保存数据。

谢谢!

最佳答案

我发现在 SPA 中保存信息的最佳方法是创建一个单例并在所有 View 中引用该单例。

例如,这是我的一个修改版本:

define([], function() {
"use strict";
var countryList: []


return {
countryList: countryList,

};
});

然后我只需要在我所有的 SPA 上使用它。 CountryList 由第一个 View [1]填写,数据可供所有其他 View 使用。

[1] 在这种情况下,我们正在制作一个向导,因此他们必须按顺序浏览 View 。

关于javascript - DurandalJS : Keeping data across a session,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23060188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com