0

Backbone+RequireJSプロジェクトの Addy Osmani の Todos mvc サイトを見ています。標準オブジェクトではないため、Todos コレクションを探しています。Todos コレクションは 2 つの Todos コレクションを必要としないため、todos.js ファイル内で 1 回だけインスタンス化されます。したがって、Addy は todos.js ファイルにインスタンスを作成し、それを返します。

これがそのような「シングルトン」オブジェクトの良い習慣であるかどうか疑問に思っています。たとえば、モデルがあり、私の ject がこのモデルのインスタンスを 1 つしか必要としない場合、インスタンス化されたモデルを model.js ファイルで返す必要がありますか (RequireJS を使用している場合)。このような場合、RequireJS を使用していない場合はどうすればよいですか?

もう 1 つの質問は、モデル インスタンスにアクセスする方法です。(RequireJS を使用して) model.js ファイルでインスタンスを返す場合は、model.js を依存関係リストに入れるだけでインスタンスを取得できます。しかし、RequireJS を使用していない場合や、インスタンス化されたモデルを model.js で返さないことにした場合はどうすればよいでしょうか? この場合、モデルのインスタンスにアクセスするための良い方法は何ですか?

4

1 に答える 1

0
var myApp = {
    controllers : {},
    models : {},
    routers : {},
    instances : {}

};

最も簡単な方法は次のとおりです。

myApp.models.Model = (function() {

    /* Model initiation etc can go here, just return the model in the end*/
    var Model = new Backbone.Model.extend({
        /* bla bla*/
    });

    return Model;

})();

myApp.instances.modelInstance = (function() {
    return new myApp.models.Model with app specific data;
})();

引き続きrequirejsを使用する場合(これは素晴らしいことです

define(["deps1", "deps"], function(deps1, deps2) {

 var Model = new Backbone.Model.extend({
            /* bla bla*/
        });

        return Model;
});

次に、新しいファイル (「modelInstance.js」) を定義します。

define(["Model"], function(Model) {


    return new Model with app specific data;
});
于 2012-10-30T21:29:13.787 に答える