【发布时间】: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 你是对的。惭愧,我应该自己想出来的。谢啦。将其发布为答案,以便我接受。