【问题标题】:Why is Backbone.js looking for the template before I render the view?为什么 Backbone.js 在我渲染视图之前寻找模板?
【发布时间】:2014-05-23 14:41:44
【问题描述】:

我是 Backbone.js 的新手,我正在编写一个小应用程序。我决定在单独的文件(books.js、authors.js)中构建与每个资源(书籍、作者)相关的所有内容。每个文件都有四个 BBjs 类:模型、集合、模型视图和与给定资源对应的集合视图。当只包含其中一个文件时,这工作正常。

现在我正在处理一个应该在特定作者页面中显示图书收藏的屏幕。我不打算渲染任何作者视图,而只是使用作者模型。但是,Backbone 使用 Uncaught TypeError: Cannot read property 'replace' of undefined (underscore.js) 失败,因为它正在寻找此页面上不存在的模板。

我的作者视图类如下所示:

app.AuthorView = Backbone.View.extend({
    ...
    template: _.template( $('#book-table-row-template').html() ),
    ...
    render: function(e) { ... }
});

该页面没有任何 #book-table-row-template 元素(我猜这是触发错误的原因),但我什至没有实例化此视图。我究竟做错了什么?还有其他更有效的方式来组织我的主干课程吗?

【问题讨论】:

  • 您正在调用_.template 函数。它不等待实例化。如果没有#book-table-row-template,jQuery 也不会找到。如果您希望它等到实例化,请在您的 initialize 方法中设置 this.template
  • @kalley LOL 你是对的。惭愧,我应该自己想出来的。谢啦。将其发布为答案,以便我接受。

标签: javascript backbone.js


【解决方案1】:

您正在立即调用_.template 函数。它不等待实例化。如果没有#book-table-row-template,jQuery 也不会找到。

如果您希望它等到实例化,请在您的 initialize 方法中设置 this.template,如下所示:

initialize: function() {
  this.template = _.template( $('#book-table-row-template').html() );
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    • 2013-07-10
    相关资源
    最近更新 更多