2013-06-03 39 views
4

我是一個newbee到backbone.I有一個叫做AbcView abc.jslistenTo在Backbone.js的另一種觀點認爲使用不工作時

var AbcView = Backbone.View.extend({ 

    events: { 
     "click" : "display", 
    }, 
    display: function(e){ 
     console.log("hello"); 
     alert("click function"); 
    } 
}); 

現在我通過這個abc.js另一個XYZ視圖.js文件並使用ListenTo在另一個視圖中調用它。

xyz.js

var xyzView = Backbone.View.extend({ 
    initialize: function(){ 
     var AbcView = new AbcView(); 
     this.lisenTo(AbcView, "click",this.display); 
    }, 
    render: function(){ 
     var html = this.template(AbcView); 
     this.$el.html(html); 
     return this; 
    }, 
    display: function(e){ 
     console.log("parent hello"); 
     alert("parent display function"); 
    } 
}); 

隨着abc.js單擊事件被觸發的罰款。但與xyz.js點擊事件不觸發。

這是調用listenTo的正確方法。

回答

2

DOM事件不在View對象上委託。

如果你想,雖然模擬此,你必須display方法手動發出事件ABC:

display: function(e){ 

    // Trigger manually 
    this.trigger("click"); 

    // Your usual code 
    console.log("hello"); 
    alert("click function"); 
} 

在最佳做法來看,我可能會重新命名「點擊」,以更描述性事件名稱。

+0

你做了我的一天。 – pilau

相關問題