2

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'}
4

1 に答える 1

10

Durandal では、viewmodel がオブジェクトを返す場合

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

Durandal は同じオブジェクトを保持します。ビューモデルがコンストラクターを返す場合

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

Durandal は、コンストラクターを呼び出して新しいオブジェクトを作成します。

于 2013-10-05T19:37:40.123 に答える