我在html中使用了引导程序选项卡,并为事件和模型使用了主干。我想触发用于引导的选项卡显示事件,以便我可以处理该事件以创建另一个视图(子视图)。
这是我的代码:
var HeaderView = Backbone.View.extend({
...
events : {
'shown.bs.tab ul.nav-tabs>li>a': 'onTabShown'
},
initialize:function() {
console.log("Header view initialize executing...");
this.template =_.template(UserTemplate, this.collection);
this.render();
this.$el.find('div.toolbar ul.nav-tabs>li:first>a').tab('show');
//$('ul.nav-tabs>li:first>a').tab('show');
},
onTabShown: function() {
console.log('tab shown event!');
}
...
}
但是,即使初始化代码执行成功,选项卡显示的事件也不会触发。因此,initialize()中引发的任何UI事件都不会触发。
创建后,如果我在视图模块外部调用事件触发器,则此方法有效。
由于尚未初始化初始化视图尚未完全初始化,是否有可能未触发UI事件?看来,解决方法是从此View之外的其他代码中调用选项卡显示事件的触发器。有没有更好的方法或做法?
这不起作用,因为您没有调用“ delegateEvents”。将this.delegateEvents()添加到您的初始化中,它将起作用。现在,它无法按预期工作的原因是,因为您正在执行initialize方法中的所有工作,该方法由Backbone.View构造函数在委派事件之前调用。除了在Backbone.View的initialize方法中进行初始化之外,什么也不做是非常不好的做法。另外,节省时间,并使用木偶...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句