出于某种原因,虽然以前工作得很好,但el
和events
绑定现在已停止正常工作。
我有:
User.HeaderView = Backbone.View.extend({
el: '#header',
template: _.template($('#header-template').html()),
events: {
"click .login": "login"
},
initialize: function(parentView) {
this.parentView = parentView;
},
render: function() {
this.parentView.render();
this.el.innerHTML = this.template(/* pass model */);
}
});
以前这个工作正常,但由于某种原因,el
不再正确绑定到DOM中的#header
。相反,它使用空div
进行实例化,可以很容易地确认:如果我使用Firebug调用el
(console.log(this.$el.parent().html()
),我会得到:
null
我期待得到的是:
<div id="header"><ul></ul></div>
这是我目前用于初始化视图的方法:
view.headerView = new HeaderView(parentView);
我是如何解决此问题或进一步调试的?
答案 0 :(得分:1)
initialize
需要一个包含您希望传递给视图的选项的对象。在这里,您传递一个视图,该视图是一个对象,可能已经设置了el
属性,覆盖了您在HeaderView
中声明的属性。尝试
User.HeaderView = Backbone.View.extend({
el: '#header',
template: _.template($('#header-template').html()),
events: {
"click .login": "login"
},
initialize: function(options) {
this.parentView = options.parentView;
},
render: function() {
this.parentView.render();
this.el.innerHTML = this.template(/* pass model */);
}
});
new HeaderView({parentView:parentView});