2015-10-18 50 views
0

我正在從輕量級Django學習Backbone.js,我無法從觸發默認事件獲取下面的函數。PreventDefault事件不工作在主幹視圖

下面是我對按鈕

<script type="text/html" id="header-template"> 
    <span class="title">Scrum Board Example</span> 
    <% if (authenticated) { %> 
     <nav> 
      <a href="/" class="button">Your Sprints</a> 
      <a href="#" class="logout">Logout</a> 
     </nav> 
    <% } %> 
</script> 

HTML,這是我的看法骨幹

var HeaderView = TemplateView.extend({ 
    tagName: 'header', 
    templateName: '#header-template', 
    events: { 
     'click a.logout': 'logout' 
    }, 
    getContext: function() { 
     return {authenticated: app.session.authenticated()}; 
    }, 
    logout: function (event) { 
     event.preventDefault(); 
     console.log('clicked'); 
     app.session.delete(); 
     window.location = '/'; 
    } 
}); 

每當我點擊一個按鈕的href - 它似乎並沒有被觸發在我的視圖模型中註銷函數。

我在其他地方出錯了嗎?

謝謝。 KJ

+0

所以它甚至不登錄 「點擊」? – Und3rTow

+0

否 - 它將頁面重新加載到localhost:8000 /# – Kannaj

+0

您是否嘗試過在函數結束時返回false而不是event.preventDefault? – Und3rTow

回答

0

如果使用preventDefault(),沒有理由使用href。

<a class="button">Your Sprints</a> 

但是,如果您使用window.location ='/'爲什麼使用preventDefault。

還可以使用回調來刪除你的刪除功能。

var callback = window.location = '/'; 
app.session.delete(callback); 

在app.session.delete:

app.session.delete = function(callback) { 
    // do stuff 
    if(callback) { 
     callback(); 
    } 
}