我刚刚开始使用Durandal.js,请原谅我这个愚蠢的问题……
当用户向应用程序提出第一个请求时,系统会要求他们选择“配置文件类型”,我需要它可以访问网站中的每个其他视图模型,我首先要在shell视图模型中创建此属性,但不要怎么做.
如何在Durandal SPA中以类似会话的方式存储数据的最佳方式?
谢谢!
解决方法
为您需要存储的数据创建一个amd模块.
然后只需要将该模块作为任何其他需要它的模块的依赖项.
有点像:
会话模块
define(function () { return { someVariable: 'value1',someVariable2: 'value2' } })
其他一些模块
define(['session'],function(session) { return { getValue1: function () { return session.someVariable; },obs1: ko.observable(session.someVariable2) } })
编辑**
AMD模块不会污染窗口对象的全局命名空间.但是如果你不想要你的会话作为依赖,只是通过一个全局变量访问它,那就完全没问题了.
你可以在shell.js中声明它,如果你愿意并做一些像:
define(function () { window.session = { someVariable: 'value1',someVariable2: 'value2' }; })
然后在其他模块中,您可以访问会话对象,如下所示:
define(function() { return { getValue1: function () { return session.someVariable; },obs1: ko.observable(session.someVariable2) } })
页面刷新之间不会保留此信息..它只在内存中.
如果您希望保留会话数据,我不会考虑在客户端上保留任何信息,除非您计划将您的应用程序设置为离线应用程序.
离线应用程序是一个甚至无法访问互联网的应用程序.但是,如果您的应用要求用户始终连接到互联网,那么我只会将会话数据存储在服务器上.因此,只需使用Web服务来保存会话数据并检索它.
您可以使用cookie将服务器上的会话绑定到客户端.