2013-04-20 55 views
0

我們已經研究並嘗試了所有可以找到的內容,但無法看到爲什麼按鈕點擊甚至沒有發射。如果我們更改視圖呈現html顏色,它會顯示更改,所以視圖呈現工作正常,但是當單擊登錄按鈕時 - >無。沒有錯誤顯示在js控制檯中。試用backbone.js <button>點擊不發射

button#login_button#login_buttonlogin_button - 什麼都沒有。我們缺少什麼? THKS任何幫助

SessionView = Backbone.View.extend({ 
    el: ('#session'), 
    initialize:function() { 
     this.render(); 
    }, 
    render:function() { 
     if (!session) { 
     $(this.el).html(
      "<button id=\"login_button\" class=\"login_button black\">"+ 
      "Login"+ 
      "</button>"); 
     return this; 
     } else { 
     $(this.el).html(
      "<button id=\"logout_button\" class=\"login_button black\">"+ 
      "Logout</button>"); 
     return this; 
     } 
    }, 
    events: { 
     "click login_button" : "login", 
     "click logout_button": "logout" 
    }, 
    login: function(){ 
     alert("login"); 
     console.log("login dialog"); 
     //var loginView = new LoginView(); 
     //loginView.render().showModal(); 
    }, 
    logout: function(){ 
     alert("You Have Logged Out"); 
    } 

    }); 
+0

雖然你說過你用'#login_button'試過,但我有點同意lib3d,它應該可以工作。還有什麼可能是錯誤的:1)你指定的'el'不存在(我想不是這種情況)2)某些監聽器返回false或停止傳播,因此你的回調函數沒有被調用。另外,'this。$ el' ='$(this.el)'。 – Loamhoof 2013-04-20 17:42:00

+0

頁面上是否有其他元素具有相同的ID?嘗試將事件綁定到類並查看會發生什麼。 – 2013-04-20 18:17:38

回答

2

你應該保持 '#' 中選擇:

events: { 
     "click #login_button" : "login", 
     "click #logout_button": "logout" 
    } 

UPDATE

你等待DOM準備使用這個骨幹視圖類new? 你的按鈕被html調用改變的事實意味着你這樣做。

只要你檢查了,你必須使用this.$el而不是$(this.el)

如果仍然不起作用,請搜索事件攔截並確保ID唯一。

這個非常簡單的JSFiddle與您告訴我們的條件相同。

+0

「*嘗試使用'#login_button' [...]什麼都沒有。*」 – Loamhoof 2013-04-20 17:36:51