Backbone.js 主干1.1.2:对于在早期版本中工作的行为,“未定义不是函数”
我是主干网的新手,正在将使用BB0.5.3编写的项目迁移到1.1.2。在1.1.2中,我得到以下错误: 未捕获类型错误:未定义不是函数 相关摘录:Backbone.js 主干1.1.2:对于在早期版本中工作的行为,“未定义不是函数”,backbone.js,backbone-views,Backbone.js,Backbone Views,我是主干网的新手,正在将使用BB0.5.3编写的项目迁移到1.1.2。在1.1.2中,我得到以下错误: 未捕获类型错误:未定义不是函数 相关摘录: reportGen = { .... initialize: function() { var reports = [ this.Views.Report1, this.Views.Report2, this.Views.Report3 ]; new this.Views.App
reportGen = {
....
initialize: function() {
var reports = [
this.Views.Report1,
this.Views.Report2,
this.Views.Report3
];
new this.Views.App({reports: reports});
}
};
以及:
当我在主干网0.5.3,或者实际上是0.9.10之前的版本中运行它时,一切似乎都正常。我得到了我期望的界面和行为。但是在版本0.9.10和之后,我得到了前面提到的错误
我已经查看了0.5.3和1.1.2中报表对象的内容,我可以访问相同的项目,例如,报表的名称。但我不知道是什么从0.9.9更改为0.9.10及更高版本导致代码失败
错误发生在以下行:
var R=新R
如果我使用
var R=新R
相反
0.9.10的变更日志似乎没有适用于我的案例的任何内容
有什么建议吗
更新:我仍然对发生的事情相当困惑。我觉得我在概念上肯定遗漏了什么。在每一个层面上检查这篇文章的内容都没有让我有所收获
更新2:我已经创建了,但是行为有些不同-这一次,出现了错误,但是我可以在下拉列表中看到报告名称。尽管如此,在1.1.2中,未定义的不是一个函数错误,但在0.9.9和更早版本中不是。也可能是删除的两个函数之一。但是,您的代码摘录不包含任何内容。检查你的其他代码你具体从哪里得到这个错误?@muistoshort我编辑了这篇文章来解释错误发生的地方。我忘了在运行之前添加它。@exussum:我已经检查了其他代码,没有出现make或change方法。
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();
},
....
});