骨干应用程序中的单个模型或集合以及如何访问它

时间:2012-10-30 21:15:14

标签: javascript backbone.js requirejs

我正在寻找Backbone+RequireJS项目上的Addy Osmani的Todos mvc网站。我正在寻找Todos系列,因为它不是一个标准的对象。 Todos集合只在instod.js文件中实例化一次,因为我们不需要两个Todos集合。因此,Addy在todos.js文件中创建一个实例并返回它。

我想知道这对于这样的“单身”对象是否是一个好习惯。例如,假设我有一个模型,我的ject只需要这个模型的一个实例,我应该在model.js文件中返回一个instanciated模型(如果我正在使用RequireJS)?在不使用RequireJS的情况下,我该怎么办?

另一个问题是如何处理我可以访问模型实例的问题。如果我在model.js文件中返回一个实例(使用RequireJS),我只需要将model.js放在依赖项列表中,然后获取实例。但是如果我不使用RequireJS或者我决定不在model.js中返回一个instanciated模型呢?在这种情况下,访问模型实例的好方法是什么?

1 个答案:

答案 0 :(得分: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;
});