2013-04-18 50 views
0

我想在我的視圖中偵聽事件/ s,但僅在某些處理後(具體而言,我只對這些事件做出響應在一個成功的Ajax調用之後 - 這一切都可以工作,這只是我無法想象的事件)。無法獲得骨幹視圖以響應由this.on添加的事件()

因此,使用events屬性不會實現我所追求的。

我是新來的骨幹,並且對於我的this.on('click'...)代碼在下面(backboneClicked()不會觸發)的問題感到茫然。

我已經包含下面的events屬性,因爲我把它放在測試中,它會觸發ourClick()。 jqueryClicked()也會觸發。

我是否錯過了一些非常明顯的東西?

我知道還有很多關於視圖沒有解僱事件的其他問題,但我看不到任何與此問題相匹配的問題。

任何幫助表示讚賞。

var InputListView = Backbone.View.extend({ 
    el: '#input-list', 

    events: { 
     'click input'  : 'ourClick' 
    }, 

    initialize: function(options) {   
     this.$el.click(this.jqueryClicked); 

     this.on('click', this.backboneClicked); 
    }, 

    ourClick: function(e) { 
     alert('ourClick'); 
    }, 

    backboneClicked: function(e) { 
     alert('backboneClicked'); 
    }, 

    jqueryClicked: function(e) { 
     alert('jqueryClicked'); 
    } 
}); 

回答

1

this.on('click', this.backboneClicked);

你期望的行爲,這有嗎?你不能點擊一個視圖,它是一個對象,而不是一個DOM元素......儘管如果你真的想測試它是否有效,可以嘗試在你的行後添加一個this.trigger('click')

不過,我不明白這裏的重點。如果您使用Backbone的on方法,則通常嘗試偵聽Backbone事件(或自定義事件),而不是UI事件。

+0

謝謝Loamhoof。我是新手,仍然對javascript有信心。你是對的。我正在將DOM事件和API事件混在一起。我想要做的是實際監聽某些輸入元素上的更改事件,但只有在滿足其他一些條件(例如,成功執行ajax調用之後)之後,纔可以對這些事件和API事件和視圖進行很好的說明。 //addyosmani.github.io/backbone-fundamentals/#events-and-views以及示例代碼。 –