首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >主干应用程序中的单个型号或集合以及如何访问它

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

Stack Overflow用户
提问于 2012-10-31 05:15:14
回答 1查看 146关注 0票数 0

我正在看Addy Osmani在Backbone+RequireJS项目上的Todos mvc站点。我正在查看Todos集合,因为它不是standart对象。Todos集合只实例化一次,并且在todos.js文件中,因为我们不需要两个Todos集合。因此,Addy在todos.js文件中创建一个实例并返回它。

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

另一个问题是如何访问模型实例。如果我在model.js文件中返回一个实例(使用RequireJS),我只需要将model.js放在依赖项列表中,就可以获得该实例。但是,如果我不使用RequireJS,或者如果我决定不在model.js中返回实例化的模型,该怎么办?在这种情况下,访问模型实例的最佳实践是什么?

EN

回答 1

Stack Overflow用户

发布于 2012-10-31 05:29:14

代码语言:javascript
复制
var myApp = {
    controllers : {},
    models : {},
    routers : {},
    instances : {}

};

最简单的方法是:

代码语言:javascript
复制
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;
})();

如果你打算继续使用(,你应该使用它的超棒的)

代码语言:javascript
复制
define(["deps1", "deps"], function(deps1, deps2) {

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

        return Model;
});

然后定义一个新文件("modelInstance.js")

代码语言:javascript
复制
define(["Model"], function(Model) {


    return new Model with app specific data;
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13147694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档