我是Backbone的新手,我正在将使用BB 0.5.3编写的项目迁移到1.1.2。在1.1.2中,我收到以下错误:
Uncaught TypeError: undefined is not a function
相关摘录:
reportGen = {
....
initialize: function() {
var reports = [
this.Views.Report1,
this.Views.Report2,
this.Views.Report3
];
new this.Views.App({reports: reports});
}
};
和
reportGen.Views.App = Backbone.View.extend({
....
initialize: function(reportList) {
_.bindAll(this, 'render', 'switchReports');
this.reports = reportList['reports'];
this.render();
},
render: function() {
var i = 0;
var reportList = {reports : []};
_.each(this.reports, function(r) {
var R = new r;
reportList.reports.push({name: R.name, label: R.label, index:i});
R.close();
i++;
}, this);
var out = $.tmpl( this.template(), reportList );
$(this.el).append(out);
// now render the default Report
var defaultReport = this.reports[0];
this.currentReport = new defaultReport();
$("div#report-container").html(this.currentReport.render().el);
this.afterReportRender();
},
....
});
当我在Backbone 0.5.3中运行它,或者实际上,在0.9.10之前的版本中,一切似乎都没问题。我得到了我期望的界面和行为。但是在0.9.10及更高版本中,我得到了上述错误。
我已经查看了0.5.3和1.1.2中报告对象的内容,我可以访问相同的项目(例如,报告的名称)。但是我不知道从0.9.9到0.9.10还有什么变化导致代码失败。
错误发生在该行:
var R = new r
如果我使用
,会发生同样的错误 var R = new r()
代替。
0.9.10的更改日志没有任何似乎适用于我的案例。
有什么建议吗?
更新:我仍然对发生的事情感到非常困惑。我觉得我必须在概念上遗漏一些东西。在每个级别检查this
的内容并没有把我带到任何地方。
更新2 :我创建了plunk with the error,但行为有所不同 - 这一次,错误显示,但我可以在下拉列表中看到报告名称。但是,有一个" undefined不是一个函数" 1.1.2中的错误,但不是0.9.9及更早版本。