我有如下:骨幹的layoutManager delegateEvents不工作
Views.Parent = Backbone.View.extend({
template: "parent",
initialize: function() {
this.render();
},
beforeRender: function() {
this.setView(".foo", new Views.Child({
model: this.model
});
},
afterRender: function() {
this.$el.html(Handlebars.compile(this.$el.html()).call(this, this.model.attributes));
var foo = this.getView(".foo");
foo.delegateEvents();
}
});
Views.Child = Backbone.View.extend({
template: "child",
events: {
"click input": "inputClick"
},
initialize: function() {
this.listenTo(this.model, "change", this.render);
},
inputClick: function() {
console.info("Input Clicked");
},
afterRender: function() {
this.$el.html(Handlebars.compile(this.$el.html()).call(this, this.model.attributes));
var foo = this.getView(".foo");
foo.delegateEvents();
}
});
在Views.Child
事件不會開火。該視圖是絕對找到的,並且foo.events返回正確的事件。我嘗試過多種插入我的子視圖的方法,delegateEvents只是沒有做到這一點。
有沒有其他人跑到這,並可以提供任何見解?
我應該提到我在子視圖中使用了events屬性和this.listenTo。他們都沒有被解僱。
編輯:父被添加到另一個視圖,例如: this.$el.append(parentView.$el);
凡parentView
是Views.Parent
實例化的對象。
Views.Child的外觀如何? – domino
我更新了帖子。這是我爲了清晰起見而實際運行的代碼的簡化版本。 – aef
'this.listenTo(model,「change」,this.render);''「model」'不應該是字符串 – domino