向包含组件发送一个动作
Sending an action to containing component
如果我有两个组件:
- 导航菜单
- 导航按钮
和 nav-menu
是一个块组件,它将 包含 nav-button
像这样:
{{#nav-menu}}
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
{{nav-button}}
{{/nav-menu}}
我希望按钮能够直接向菜单发送一个动作,告诉它切换它的可见性状态。我想如果我挂接到 Controller 中的互斥点,那么我可以做类似的事情:
{{#nav-menu toggleNavigation=mutex}}
{{nav-button action=mutex}}
{{/nav-menu}}
这是唯一的方法吗?只是在寻找最优雅的、以 ember 为中心的方式来做到这一点。
我之前 运行 遇到过这个问题,不幸的是,public API 没有办法解决这个问题。创建块组件时,在其内部呈现的任何内容都具有外部作用域的上下文,而非 组件。不幸的是,没有办法改变这种行为,但它确实有意义。
我会说你提出的方法是处理这种情况的最佳方法:在传递给外部组件的控制器上有一个变量。它符合 Ember 的 "data down, actions up" 理念。
如果我有两个组件:
- 导航菜单
- 导航按钮
和 nav-menu
是一个块组件,它将 包含 nav-button
像这样:
{{#nav-menu}}
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
{{nav-button}}
{{/nav-menu}}
我希望按钮能够直接向菜单发送一个动作,告诉它切换它的可见性状态。我想如果我挂接到 Controller 中的互斥点,那么我可以做类似的事情:
{{#nav-menu toggleNavigation=mutex}}
{{nav-button action=mutex}}
{{/nav-menu}}
这是唯一的方法吗?只是在寻找最优雅的、以 ember 为中心的方式来做到这一点。
我之前 运行 遇到过这个问题,不幸的是,public API 没有办法解决这个问题。创建块组件时,在其内部呈现的任何内容都具有外部作用域的上下文,而非 组件。不幸的是,没有办法改变这种行为,但它确实有意义。
我会说你提出的方法是处理这种情况的最佳方法:在传递给外部组件的控制器上有一个变量。它符合 Ember 的 "data down, actions up" 理念。