我有一个在路由器中呈现的视图,但在呈现之后,没有任何事件会被触发。以下是我的观点:
function(Global, util, user, userMenu) {
/*userMenu is the template*/
var UserMenuView = Backbone.View.extend({
initialize: function() {
this.template = _.template(userMenu);
},
render: function() {
var container = $(this.el);
container.empty().append(this.template());
return container;
},
events: {
"tap #about-user-menu" : "launchAbout",
"keydown #about-user-menu": function(e) { if (e.which === 13) this.launchAbout(e); },
"tap #help-user-menu" : "launchHelp",
"keydown #help-user-menu": function(e) { if (e.which === 13) this.launchHelp(e); },
"tap #resources-user-menu" : "launchResources",
"keydown #resources-user-menu": function(e) { if (e.which === 13) this.launchResources(e); },
},
launchAbout: function(e){
e.preventDefault();
alert("about");
},
launchHelp: function(e){
e.preventDefault();
alert("help");
},
launchResources: function(e){
e.preventDefault();
alert("resources");
}
});
return UserMenuView;
}
这就是我在路由器中呈现视图的方式:
showUserMenu: function(){
var userMenu = new UserMenuView();
userMenu.render();
}
答案 0 :(得分:1)
this.template()
只返回一个HTML字符串,导致问题。
所以你应该尝试追加el
字符串的HTML
元素以及Event bindings
现在在您的视图中将HTML
分配给el
render: function() {
this.$el.html(this.template());
return this;
}
路由器中的
$('#menu').append(UserMenuView.render().el);