2013-08-30 24 views
0

其實我正在開發一個應用程序,我在其中使用以下框架。觸發事件在backbone.js中不起作用

Backbone.js 
Handlebar.js 
Marionette.js 
Require.js 

其實我沒有得到如何調試這個問題。

我有一個觀點MemberRegistrationView這樣

this.trigger("memRegForm:submit", memRegisFormData); 

現在,一個觸發事件在我的我已經wrttien這個處理器在控制器此MemberRegistrationView對象控制器。

memberRegistrationView.on("memRegForm:submit", function(data) { 
       console.log("member submit event "); 

      }); 

但問題是這個處理程序沒有被調用。現在如何調試這個其實我是新來的主幹。

我已經在Google上搜索,但無法找到任何幫助。

+0

要觸發事件,你可能想要使用jQuery緩存的'$ this',例如'$ this.trigger(「memRegForm:submit」,memRegisFormData);' – Jack

+1

@傑克:可能不會,jQuery事件與Backbone事件不一樣。 –

+0

你是否確定'this'就是你認爲它是'this.trigger('memRegForm:submit',...)'?很難知道沒有更多的上下文會發生什麼問題。 –

回答

1

由於調試這個我會做下一個步驟的方式:

  1. 確認時查看內部​​定義的處理事件的代碼工作:

    var MemberRegistrationView = Backbone.View.extend({ 
        ... 
        initialize: function() { 
        this.on("memRegForm:submit", function(data) { 
           console.log("member submit event "); 
    
          }); 
        } 
        ... 
    
    }); 
    

    在此步驟檢查無論這個事件是否從你的觀點觸發。如果沒有觸發,比你的觸發方式有問題。在觸發線上放置一個斷點並進行調試 - 檢查您的情況是否到達該行。

  2. 如果以前的代碼正在工作,而不是在視圖外定義處理程序事件時發生錯誤。我會做下一件事:驗證事件是否已在視圖對象上註冊 - 這可以在視圖對象的屬性中看到。

供參考 - 在骨幹你有事件模塊,可以在每個對象混合。 View對象已經擁有它。這個模塊的功能可以在http://backbonejs.org/#Events

+0

謝謝,檢查_events屬性幫助我看到,我的處理程序不屬於視圖,而是完全屬於另一個庫的方法。 –