listenTo在backbone.js的另一个视图中使用时不工作
我是个新手,我有一个观点叫AbcView abc.js 现在我将这个abc.js传递给另一个xyz.js文件,并使用ListenTo在另一个视图中调用它listenTo在backbone.js的另一个视图中使用时不工作,backbone.js,Backbone.js,我是个新手,我有一个观点叫AbcView abc.js 现在我将这个abc.js传递给另一个xyz.js文件,并使用ListenTo在另一个视图中调用它 xyz.js var xyzView = Backbone.View.extend({ initialize: function(){ var AbcView = new AbcView (); this.lisenTo(AbcView, "click",this.display); },
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的正确方法吗 DOM事件不会委派给视图对象 但是,如果要模拟此情况,则必须在ABC
display
方法中手动发出事件:
display: function(e){
// Trigger manually
this.trigger("click");
// Your usual code
console.log("hello");
alert("click function");
}
根据最佳实践,我可能会将“click”重命名为更具描述性的事件名称。主干
on
和listenTo
用于收听主干模型和集合上的事件
这是一件需要理解的重要事情。它与UI事件绑定不同,如中所述
也就是说,你可以使用Simon建议的东西来混合两者
display: function(e){
// Trigger manually
this.trigger("click");
// Your usual code
console.log("hello");
alert("click function");
}