2013-06-03 42 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