Javascript 主干视图:$el未按预期工作
我定义了一个视图,如下所示:Javascript 主干视图:$el未按预期工作,javascript,backbone.js,Javascript,Backbone.js,我定义了一个视图,如下所示: var BookView = Backbone.View.extend({ tagName: "div", className: "bookContainer", initialize: function() { this.render(); }, render: function() { this.$el.html("Hello World"); // Problem is here
var BookView = Backbone.View.extend({
tagName: "div",
className: "bookContainer",
initialize: function() {
this.render();
},
render: function() {
this.$el.html("Hello World"); // Problem is here
return this;
}
});
var bookView = new app.BookView({});
问题是,Hello World
没有添加到指定的div
,我使用this.$el
引用该div
相反,如果我这样做(在render()
方法中):
它很好用。为什么这个.$el
没有引用$(“.bookContainer”)
注意:如果我记录此。$el,我将得到以下对象:
[div.bookContainer, context: div.bookContainer]
您需要在页面中插入
bookView
当您调用bookView=newapp.bookView({})时
您有一个主干的实例。视图
包含以下html:
<div class="bookContainer">
Hello World
</div>
对
el
的引用是主干的元素。查看,可以找到相关文档您误解了标记名和类名的工作原理。从:
elview.el
[…]
this.el
可以从DOM选择器字符串或元素解析;否则,它将从视图的标记名
、类名
、id
和属性
属性创建
因此,标记名
和类名
属性用于创建el
,而不是在DOM中找到它。如果要将视图绑定到现有图元,请使用el
:
el: '.bookContainer'
对不起,我忘了在我的帖子中添加这个,但是我的html中已经有了这个@akshayKhot,当我读到mu的答案时,我意识到他已经得到了你想要的答案。谢谢,我没有意识到这一点。从my index.html中删除原始的div.bookContainer
后,它现在可以工作了。谢谢
bookView = new app.BookView({});
// put the bookview element into the dom
$('body').html(bookView.el);
el: '.bookContainer'