【发布时间】:2012-09-21 03:03:52
【问题描述】:
我有一个模型需要被多个视图访问,为了在模型模块的定义中完成这个,我立即实例化它,如下所示:
define([
'jquery',
'underscore',
'backbone'
], function(_, Backbone) {
var Foo = Backbone.Model.extend({
// wondrous methods and properties
});
return new Foo();
});
我真的只需要这个模型的一个实例——现在就是这样。据我所知,解决方法是有一个单独的App 模块。比如:
define([], function() {
var App = {
routers: {},
models: {},
views: {}
};
return App;
});
您可以在其上实例化和存储应用启动时对对象的引用:
require([
'App',
'Foo'
], function(App, Foo) {
App.models.foo = new Foo();
});
但我觉得这是一个糟糕的选择,因为你基本上要回到拥有一个全局命名空间 - 这是 RequireJS 应该帮助避免的事情。
是否有任何替代方案,是否有充分的理由避免使用如上所述的单例模型?
【问题讨论】:
-
按照您在第一个示例中所做的方式,您应该完全没问题。
标签: javascript backbone.js requirejs