2012-01-15 101 views
0

我一直無法通過我的item_match_result函數獲取點擊事件。backbone.js點擊事件未註冊

我已經嘗試將item_match_result放入ItemList視圖中,因爲它是父類,但無法使其工作,它確實屬於ItemMatch視圖。

有什麼建議?

MyApp.Views.ItemList = Backbone.View.extend({ 
    tagName: 'li', 
    className:'item_list', 
    ... 

    render_item_match: function(model){ 
      var item_match = new MyApp.Views.ItemMatch({model:model}); 
     $(this.el).append(item_match.el); 
     } 


}); 

MyApp.Views.ItemMatch = Backbone.View.extend({ 
    tagName: 'a', 
    className: 'item_match_result', 

    initialize: function(){ 
     _.bindAll(this,"item_match_result"); 
     this.render(); 
    }, 


    events : { 
     "click a.item_result": "item_match_result" 
    }, 

    render : function(){ 
     this.el = HandlebarsTemplates['items/itemSearchResultItem'](this.model.attributes); 

    }, 

    item_match_result: function(){ 
    console.log(this); 
    } 
}); 


}) 

回答

3

您不能替換this.el並使其仍然有效。你只是殺死了事件綁定的元素。如果你這樣做,你需要再次運行this.delegateEvents()來重新綁定它。

MyApp.Views.ItemMatch = Backbone.View.extend({ 
    tagName: 'a', 
    className: 'item_match_result', 

    initialize: function(){ 
     _.bindAll(this,"item_match_result"); 
     this.render(); 
    }, 


    events : { 
     "click a.item_result": "item_match_result" 
    }, 

    render : function(){ 
     this.el = HandlebarsTemplates['items/itemSearchResultItem'](this.model.attributes); 

     this.delegateEvents() 

    }, 

    item_match_result: function(){ 
    console.log(this); 
    } 
}); 
+1

了'delegateEvents'實際上並沒有爲我工作哈利,但是我用'$(this.el)的.html(車把...)'和得到它的工作,所以我給你點指着我在正確的方向。 – pedalpete 2012-01-15 23:33:19