backbone.js – 从项目视图到父版面浏览的Marionette bubble事件?

前端之家收集整理的这篇文章主要介绍了backbone.js – 从项目视图到父版面浏览的Marionette bubble事件?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个区域的布局视图,在该区域我有一个项目视图触发一个事件,但似乎没有冒泡到布局视图.我做错了什么或是这样设计的行为?我假设itemview前缀未添加,因为父视图不是集合视图?无论哪种方式,事件都不会冒泡到布局视图.
layoutView = Marionette.Layout.extend({
        template: "#layout-template",regions: {
            titleRegion: "#job-title-region"
        },triggers: {
            "save:clicked" : "onSaveClicked"
        },onSaveClicked: function (args) {
            alert('Clicked');
        }
    });

childview = Marionette.ItemView.extend({
        template: "#child-template",triggers: {
            "click .js-save": "save:clicked"
        }
    });

更新:

看到这个小提琴http://jsfiddle.net/7ATMz/11/我设法得到布局视图来监听子事件,但是我必须将其连接到布局视图本身之外,并打破封装.无论如何,我可以在布局视图中执行此操作吗?

谢谢,

乔恩

解决方法

触发器不太像这样工作:你的布局使用错误.触发器是给予特定交互(例如,点击)引发事件信号的便利.

你想要的是使用triggerMethod(https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.functions.md#marionettetriggermethod)来触发你的布局中的一个功能.参见http://jsfiddle.net/ZxEa5/基本上,你想要这个在你的演出功能

childView.on("btn:clicked",function(){
  layout.triggerMethod("childView:btn:clicked"); 
});

在你的布局中:

onChildViewBtnClicked: function(){
   https://leanpub.com/marionette-gentle-introduction
});

事件冒泡只会自动与收集复合视图,因为它们与项目视图紧密相关.如果您想要布局来监视其中的一个子视图,则需要自行设置.

无耻的插件:如果您想了解更多关于如何使用Marionette构建和清理代码的信息,您可以查看我的书(https://leanpub.com/marionette-gentle-introduction)中更详细的解释这一概念(及其应用)的内容.

猜你在找的JavaScript相关文章