【发布时间】:2013-10-07 22:22:09
【问题描述】:
我正在为我的 SPA 应用程序使用 Durandal 和 Require。我也在使用 John Papa 的 HotTowel 模板。
对于我的模块,我需要根据请求创建其中一些模块,而其中一些模块需要是单例的。
define([], function(){
var bookId = ko.observable();
var bookName = ko.observable();
return {
bookId: bookId,
bookName: bookName
};
}
上述模块似乎为每个组合使用返回一个新实例,例如:
compose: {model: 'viewmodels/book'}
但是,如果我希望视图模型在所有合成中都相同,该怎么办。例如,我想要一个名为 loginInfo 的登录视图模型,它将在很多地方使用,因此它不应该在每个组合上初始化,因为它是在第一次登录时在某个地方启动的。
compose: {model: 'viewmodels/loginInfo'}
【问题讨论】:
-
上述模块确实返回了一个单例,参见durandaljs.com/documentation/Creating-A-Module。是什么让你相信它不是?
-
确实,它唯一会返回新内容的时候是当你返回一个构造函数时。
-
@RainerAtSpirit,看来你是对的。这是我的错。
-
@MatthewJamesDavis 因为我是 javascript 世界的新手,所以我混淆了这些概念。问题是我在RequireJs中想,如果我们返回函数就意味着它是一个构造函数,如果我们返回一个对象,它就是一个单例对象!
-
@MatthewJamesDavis 你不想发布答案吗!?所以我可以在这个问题解决后关闭它!?
标签: javascript requirejs single-page-application durandal hottowel