Backbone.js的为什么EL未定义
问题描述:
为什么会EL的underfined错误 - 感谢Backbone.js的为什么EL未定义
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script src="http://ajax.cdnjs.com/ajax/libs/json2/20110223/json2.js"></script>
<script src="http://ajax.cdnjs.com/ajax/libs/underscore.js/1.1.6/underscore-min.js"></script>
<script src="http://ajax.cdnjs.com/ajax/libs/backbone.js/0.3.3/backbone-min.js"></script>
<script type ="text/javascript">
var SimpleView = Backbone.View.extend({
tagName: 'li',
id: 'todo-id',
className: 'todo-class',
render: function() {
var htmls = '<h3>jhjljlkjkljkljkljkljkjkjj</h3>';
//this.$el.html(htmls);
$(this.el).html(htmls);
}
});
var simpleView = new SimpleView();
simpleView.render();
//console.log(simpleView.el);
</script>
答
您的代码有效。
var SimpleView = Backbone.View.extend({
tagName: 'li',
id: 'todo-id',
className: 'todo-class',
render: function() {
var htmls = '<h3>jhjljlkjkljkljkljkljkjkjj</h3>';
//this.$el.html(htmls);
$(this.el).html(htmls);
}
});
var simpleView = new SimpleView();
simpleView.render();
console.log(simpleView.el);
您的问题是,你指着一个很老的版本骨干(0.3.3)。
更新您的依赖链接以加载最新版本。
答
您需要定义什么是el
:
var SimpleView = Backbone.View.extend({
el: $("YourElement"),
tagName: 'li',
id: 'todo-id',
className: 'todo-class',
render: function() {
var htmls = '<h3>jhjljlkjkljkljkljkljkjkjj</h3>';
//this.$el.html(htmls);
$(this.el).html(htmls);
}
});
编辑
看起来我可能是错的:
如果指定,则为。如果不是,el是一个空格。 (从http://backbonejs.org/#View-el)
在你的'render'方法中,放一个'console.log(this)'并发布结果。 – marteljn 2013-02-22 16:38:26
耸耸肩。它在这里工作:http://jsfiddle.net/GYGF7/ 哦,嗯,你指的是一个古老的骨干版本。 – 2013-02-22 16:41:03
你应该接受@EdwardMSmith的回答。这绝对是最好的解决方案。您可以调整代码以使其正常工作,但升级无疑是最佳选择。 – marteljn 2013-02-22 17:57:50