gpt4 book ai didi

javascript - 如何在Controller中捕获Subview事件?

转载 作者:行者123 更新时间:2023-12-01 03:25:42 25 4
gpt4 key购买 nike

使用 RequireJS 模块构建的 BackboneJS 应用程序。

一个 View 有多个 subview 实例。 subview 中的点击事件应该运行 Controller 方法。

初始化顺序需要Controller中的View模块,因此需要subView中的Controller模块将创建循环依赖.

我更愿意创建事件来将数据传递给 Controller ​​。考虑了两种选择:

  1. View 监听 subView 事件并触发自己的事件,监听者 Controller ;
  2. 有第三个应用程序全局对象, subview 触发器该对象上的事件, Controller 监听该对象?

这里最好的模式是什么?

最佳答案

木偶有event bubbling到位。例如,如果 View 触发“some:event”,您可以在 Collection View 上将其监听为“childview:some:event”。

如果您有非常深入的 View 结构,那么“childview:...childview:some:event”开始看起来非常糟糕,然后您可能会考虑三种选择:手动对它们进行冒泡,使用全局消息总线,例如“backbone.radio” “或传递一些实体来触发其上的事件。

我个人对全局总线感觉不好,并且更喜欢为应用程序的每个有意义的部分提供一些可以实现 mediator 的东西。/observer图案。基本实现可能是状态模型,在 Controller (或路由器)中创建并传入下面的所有 View - 然后它们中的任何一个都可以更改状态中的某些内容或监听更改。

实际上,由于 Controller 在 Marionette 3 中已被弃用,因此将所有 Controller 逻辑移至这些状态模型内可能是一个好主意。不幸的是,随着 Backbone 社区的衰落,我找不到关于该主题的任何好的资源。

关于javascript - 如何在Controller中捕获Subview事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44840710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com