重构:修复 Shop 与 ItemTooltip 跨模块事件边界问题
- 将 _tooltipLocked 状态从 ItemTooltipController 移到 ShopController 维护 - DisplayItem 只发 Shop 模块 UI 事件(Hover/Lock/Hide) - ItemTooltipForm 取消按钮发 ItemTooltip 模块事件自关闭 - ShopController 通过 UIRouter 跨模块控制 ItemTooltipForm - 移除 DisplayItemHideEventArgs 的 Force 字段,分离两种关闭场景
This commit is contained in:
@@ -138,6 +138,7 @@ View
|
||||
- 在 `Controller` 中堆叠大段领域业务规则
|
||||
- 绕过 `Context` 直接把业务对象塞给 `View`
|
||||
- 直接修改其他 UI 的内部 `View`
|
||||
- **直接调用 View 的公开方法进行局部刷新**;应通过更新 `Context` 并设置刷新粒度控制字段,再调用 `RefreshUI` 让 View 自行决定刷新内容
|
||||
|
||||
### 3.4 Context 层
|
||||
|
||||
@@ -152,12 +153,16 @@ View
|
||||
- **不允许携带回调委托或行为**,交互行为由 Controller 注册,View 通过 UI 专用事件通知 Controller
|
||||
- 允许组合子 `Context`
|
||||
- 不进入 `UseCase`
|
||||
- **允许提供构造函数**,但只能由对应的 `Controller` 调用,用于封装从 `RawData` 到展示数据的转换逻辑
|
||||
- **允许提供刷新粒度控制字段**(如 `NeedRefreshXxx` 布尔字段),用于支持局部刷新;View 根据这些字段决定刷新哪些部分,Controller 在更新数据后设置对应字段并调用 `RefreshUI`
|
||||
|
||||
说明:
|
||||
|
||||
- `Context` 可以包含展示层需要的最终数据
|
||||
- `Context` 可以是“已格式化”的显示数据
|
||||
- 但这些数据必须由 `Controller` 负责准备,而不是 `UseCase`
|
||||
- `Context` 的构造函数可以包含轻量的展示逻辑转换(如格式化文本、选择图标),但不应包含复杂业务规则
|
||||
- 刷新粒度控制字段的典型用法:Controller 更新 Context 数据后,设置 `NeedRefreshXxx = true`,然后调用 `RefreshUI`;View 在 `RefreshUI` 中检查这些字段,只刷新需要更新的部分,最后将字段重置为 `false`
|
||||
|
||||
### 3.5 View 层
|
||||
|
||||
|
||||
Reference in New Issue
Block a user