使用 Durandal 和 Required 的静态模块声明

Static module declaration using Durandal and Require

本文关键字:静态 模块 声明 Required Durandal 使用      更新时间:2023-09-26

我正在使用Durandal和Require作为我的SPA应用程序。我也在使用约翰爸爸的热毛巾模板。

对于我的模块,我需要根据请求创建其中一些模块,其中一些是单例。

define([], function(){
    var bookId = ko.observable();
    var bookName = ko.observable();
    return {
        bookId: bookId,
        bookName: bookName
    };
}

上面的模块似乎为每个组合使用返回一个新实例,如下所示:

compose: {model: 'viewmodels/book'}

但是,如果我希望视图模型在所有合成中都相同,该怎么办?例如,我想要一个名为 loginInfo 的登录视图模型,它将在很多地方使用,因此它不应该在每个合成上初始化,因为它是在第一次登录时在某个地方启动的。

compose: {model: 'viewmodels/loginInfo'}

在杜兰达尔中,如果视图模型返回一个对象

define(function(require) {
    return { a: 1, b: 2 }
});

杜兰达尔将保留相同的对象。如果视图模型返回构造函数

define(function(require) {
    return Function() {
        this.a = 1;
        this.b = 2;
    }
});

Durandal 将通过调用构造函数创建一个新对象。