我是骨干js的新手并且需要js。
我使用requirejS将我的骨干代码组织成模块。我不知道这对我想要的东西是否有任何重要性。我想要一个中央模型,我的所有视图都可以访问。他们应该能够获得和设定价值。我不想将它用作每个视图模型。我需要保留内存搜索选项,用户状态(登录/注销)等。
有什么想法吗?
修改
也许答案就在这里?
答案 0 :(得分:4)
如果我已经很清楚你想要什么,我会说你在几个Model
中只有一个Views
并不需要特别的东西,只需这样做:
// code simplified and no tested
App.Model = Backbone.Model.extend({});
App.View = Backbone.View.extend({});
var myModel = new App.Model();
var viewOne = new App.View({ model: myModel });
var viewTwo = new App.View({ model: myModel });
您可以将自定义参数传递给View.initialize
:
// code simplified and no tested
App.Model = Backbone.Model.extend({});
App.CommonModel = Backbone.Model.extend({});
App.View = Backbone.View.extend({
initialize: function( opts ){
this.commonModel = opts.commonModel;
}
});
var myModelOne = new App.Model();
var myModelTwo = new App.Model();
var myCommonModel = new App.CommonModel();
var viewOne = new App.View({ model: myModelOne, commonModel: myCommonModel });
var viewTwo = new App.View({ model: myModelTwo, commonModel: myCommonModel });
答案 1 :(得分:2)
使用requirejs,我会创建一个定义单例模型的模块,假设 app / settings.js
define(['backbone'], function (Backbone) {
var Settings = Backbone.Model.extend({
});
return new Settings();
});
并将其拉入我的其他模块,例如
define(['backbone', 'app/settings'], function (Backbone, settings) {
settings.set("pref", "my pref");
});
对 app / settings.js 的后续调用将返回相同的对象。