Javascript 传递给initialize()视图的参数在Backbone.js中未定义
我正在开发一个Backbone.js应用程序,它利用一个“主视图”,所有视图和子视图都从主视图扩展而来 主视图 然后我有一个生成页面的主视图,它可以调用较小部分的子视图:Javascript 传递给initialize()视图的参数在Backbone.js中未定义,javascript,backbone.js,requirejs,Javascript,Backbone.js,Requirejs,我正在开发一个Backbone.js应用程序,它利用一个“主视图”,所有视图和子视图都从主视图扩展而来 主视图 然后我有一个生成页面的主视图,它可以调用较小部分的子视图: define(['backbone','masterView', 'mySubView'], function (Backbone, mView, mySubView) { var mainView = mView.extend({ events: function () { return
define(['backbone','masterView', 'mySubView'], function (Backbone, mView, mySubView) {
var mainView = mView.extend({
events: function () {
return _.extend({}, coreView.prototype.events, {
});
},
render: function () {
var sub = new mySubView({'foo': 'bar'});
}
});
return new mainView();
});
最后,我的子视图在初始化时表示选项未定义
define(['backbone','masterView', 'mySubView'], function (Backbone, mView, mySubView) {
var subView = mView.extend({
events: function () {
return _.extend({}, coreView.prototype.events, {
});
},
initialize: function (options) {
console.log(options);
}
});
return new subView();
});
在这个设置中,当我在MainView中传递选项时,为什么选项没有定义?如果子视图不扩展masterView,而是扩展Backbone.view,则可以正常工作。子视图文件中的最后一行:
return new subView();
您将返回一个新实例,而不是在子视图模块中返回构造函数。应该是:
return subView;
注意,对于类型构造函数、类等,代码应该使用PascalCase,而实例变量、属性等应该使用camelCase
此外,我还分享了一些技巧。您可以将事件合并到基类而不是每个子类的责任转移到基类。感谢您提供的附加格式提示和进一步阅读!
return subView;