Backbone 1.1.2:对于早期版本中的行为,“undefined不是函数”

时间:2014-10-16 21:13:45

标签: backbone.js backbone-views

我是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及更早版本。

0 个答案:

没有答案