【发布时间】:2012-06-26 15:12:23
【问题描述】:
我想创建两个(或更多)视图实例,每个实例具有不同的 el 属性,并通过主干.js 视图的事件哈希(而不是通过 jQuery)将事件绑定到它们。
当所有实例具有相同的el 时触发事件很容易:
someView = Backbone.View.extend({
el: '#someDiv',
events: {
'click': 'someFunction'
},
someFunction: function(){
//Do something here
}
});
到目前为止,如果我在initialize函数中分配el,并正常设置events如下,事件不会触发:
someView = Backbone.View.extend({
events: {
'click': 'someFunction'
},
initialize: function( options ){
this.el = options.el
},
someFunction: function(){
//Do something here
}
});
我的第一个直觉是让el 成为一个函数,它返回感兴趣的 dom 元素的字符串表示:
someView = Backbone.View.extend({
el: function(){
return '#someDiv-' + this.someNumber
},
events: {
'click': 'someFunction'
},
initialize: function( options ){
this.someNumber = options.someNumber
},
someFunction: function(){
//Do something here
}
});
但是,如果我有 x 个 someView 的实例化,这会触发 x 次 someFunction。
接下来我尝试在initialize 中设置el 和events 属性:
someView = Backbone.View.extend({
initialize: function( options ){
this.el = options.el
this.events = {
'click': 'someFunction'
}
},
someFunction: function(){
//Do something here
}
});
但这不会触发事件。在这一点上,我几乎在钓鱼。
有谁知道如何使用特定于该实例的el 实例化一个backbone.js 视图,该实例具有仅针对该实例触发的事件,而不是View 的其他实例?
【问题讨论】:
标签: backbone.js