2014-12-05 92 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);