我有一个区域的布局视图,在该区域我有一个项目视图触发一个事件,但似乎没有冒泡到布局视图.我做错了什么或是这样设计的行为?我假设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)中更详细的解释这一概念(及其应用)的内容.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。