我正在试图弄清楚为什么这样做是可行的:
var TestView = Backbone.View.extend({
views: {},
initialize: function(){
this.bind('transistion:complete', this.onPageLoaded);
},
onPageLoaded: function(){
alert("works!");
}
});
var v = new TestView();
v.trigger('transition:complete');但这是行不通的:
var TestView = Backbone.View.extend({
views: {},
events:{
'transition:complete': 'onPageLoaded'
},
onPageLoaded: function(){
alert("works!");
}
});
var v = new TestView();
v.trigger('transition:complete');能够从视图的events对象中触发我的自定义事件会更简洁。有没有什么办法可以让它起作用呢?
发布于 2012-06-25 20:15:14
events散列是为DOM事件(如单击)指定的,而通过trigger触发并通过on绑定的事件是Backbone的内部事件。因此,当您转到v.trigger('eventname')时,该事件不是DOM事件,而是特定于Backbone的。
阅读更多here
发布于 2012-08-28 22:47:01
主干事件散列与DOM关联,而不是与视图关联。
检查如何在View元素中运行触发器:
var TestView = Backbone.View.extend({
events:{
'transition:complete': 'onPageLoaded'
},
onPageLoaded: function(){
alert("works!");
}
});
var v = new TestView();
v.$el.trigger('transition:complete');但是,如果自定义事件不需要绑定到元素,您的第一个代码就可以了,只需将bind替换为on,如下所示:
this.on('transistion:complete', this.onPageLoaded);https://stackoverflow.com/questions/11188824
复制相似问题