2014-12-05 59 views
1

我有一个视图在路由器中呈现,但是在渲染后,没有任何事件会触发。以下是我的观点:渲染视图后不会触发主干事件

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

秀分配HTMLel

render: function() { this.$el.html(this.template()); return this; } 

代码你如何在父视图中追加 – StateLess 2014-12-05 05:08:57

+0

@ aktiv-coder抱歉, m实际上在路由器中渲染。我编辑了这个问题来证明这一点。我已经尝试了你的答案,但它不起作用 – 2014-12-05 05:32:11

+0

你永远不会将视图的“el”添加到页面,也不会将“el”传递到视图中。 – 2014-12-05 05:34:52

回答

1

this.template()在你的代码返回只是一个HTML字符串,造成问题的原因。

所以你应该尝试添加现在您的看法来看,其具有HTMLel元素,也Event bindings

在你的路由器

$('#menu').append(UserMenuView.render().el);