我正在学习backbone.js,而我几乎是在开始。我想通过underscore模板方法添加模板,但这对我不起作用。我搜索了这个错误,但自己无法解决。如果没有显示模板,我该如何前进?需要一些帮助。
以下是代码(此代码来自addyosmani的书籍骨干基础知识):
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>testing</title>
</head>
<body>
<script src="scripts/jquery.js"></script>
<script src="scripts/underscore.js"></script>
<script src="scripts/backbone.js"></script>
<script>
var TodoView = Backbone.View.extend({
tagName: 'li',
// Cache the template function for a single item.
todoTpl: _.template( $('#item-template').html() ),
events: {
'dblclick label': 'edit',
'keypress .edit': 'updateOnEnter',
'blur .edit': 'close'
},
// Re-render the titles of the todo item.
render: function() {
this.$el.html( this.todoTpl( this.model.toJSON() ) );
this.input = this.$('.edit');
return this;
},
edit: function() {
// executed when todo label is double clicked
},
close: function() {
// executed when todo loses focus
},
updateOnEnter: function( e ) {
// executed on each keypress when in todo edit mode,
// but we'll wait for enter to get in action
}
});
var todoView = new TodoView();
// logs reference to a DOM element that cooresponds to the view instance
console.log(todoView.el);
答案 0 :(得分:8)
如果在脚本之后定义了模板,它将无效。
将您的切入点包装进
$(function(){
var todoView = new TodoView();
});
所以你不会遇到这种错误。
答案 1 :(得分:4)
我得到了同样的错误。确保页面上存在已定义 id 的模板。 在我的情况下,我使用错误的 id 作为模板,这是错误的原因“TypeError:n is undefined”。