是否有方便的方法从/向Backbone中的多个级别的子/父视图投掷/捕获(自定义)事件?
让我解释一下我的情况。我正在捕捉“keydown”事件并检查是否应该在父级别上进行某些交互。如果没有,那么我正在调用childView函数。我的BaseView看起来像这样:
var BaseView = Backbone.View.extend({
keydown: function(e){
return this;
},
});
它工作正常,直到我没有尝试抛出其他customEvents与childViews的childViews进行交互。顺便说一下,不知道自己的存在。
我不能简单地做下面的事情,因为我的父母甚至不知道subView的所有childViews。我正在尝试做这样的事情:
例如。模糊subChildViews输入
Parent.subview.subsubview.trigger('blurInput');
我确信我的事件推动方式错误 - “keydown” - 方法, 有人能指出我正确的方向吗?
修改
原始的BackboneJS并不是真的为这样的东西构建,但是那里有一个模块。 MarionetteJS是我的解决方案,它提供了我想要的一切。子视图,模块化逻辑和优化的交叉视图事件系统。
上有一个很棒的入门教程答案 0 :(得分:1)
那么在骨干形式的划痕中没有方便的解决方案,因为嵌套视图不是有任何办法。 我可以建议你设置父母关系(所以每个视图都知道它的父母)而不是父母知道所有的子视图,只要视图是一个事件发射器默认玩具可以做这样的事情[伪代码] :
父视图:
var BaseView = Backbone.View.extend({
keydown: function(e){
this.trigger("custom.keydown");
return this;
},
});
子视图:
var ChildView = Backbone.View.extend({
initialize:function(){
this.parent.on("custom.keydown",this.keydown,this);
}
});