Backbone.js`el`和`events`未正确绑定
由于某种原因,以前工作正常的haveBackbone.js`el`和`events`未正确绑定,backbone.js,Backbone.js,由于某种原因,以前工作正常的haveel和events绑定现在停止正常工作 我曾经: User.HeaderView = Backbone.View.extend({ el: '#header', template: _.template($('#header-template').html()), events: { "click .login": "login" }, initialize: function(parentView) {
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(console.log(this.$el.parent().html()
)调试el
,我会得到:
我期望得到的是:
<div id="header"><ul></ul></div>
您知道如何修复此问题或进一步调试吗?
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});
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});
对我有用谢谢你的提琴。我澄清了一点问题:我实际上使用的是parentView,这可能是问题的一部分。
是一个打字错误,对吧?是的。应该是
对我有用谢谢你的提琴。我澄清了一点问题:我实际上使用的是parentView,这可能是问题的一部分lem.
是一个打字错误,对吧?是的。应该是
非常感谢!!它工作了,还有什么更好的呢?我现在明白了初始化
应该如何使用!非常感谢!!它工作了,还有什么更好的呢?我现在明白了初始化
应该如何使用了!
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});