首页 > 解决方案 > 获取控制器中某个 Ember 组件的值

问题描述

假设我有一个名为 X 的自定义组件。

<X>my value</X>

我现在想访问 X 控制器中的“我的价值”。我该怎么做?

标签: ember.js

解决方案


组件无权访问该内容。

<X>组件在您的示例中以块形式使用。支持块形式的组件将执行上下文返回给调用者。它{{yield}}在其模板中标有关键字的位置执行此操作。此时,执行将返回给调用者。该组件无权访问在该插槽中运行的代码。

这类似于回调的概念:

  • {{has-block}}您可以使用helper来检测调用者是否使用块形式。这类似于您可以在函数中检测到是否提供了回调。
  • 您可以使用 `{{yield}} 关键字上的位置参数将上下文传递给产生的块。这类似于执行带参数传入的回调。
  • 您可以通过在模板中添加 silbings 在 yield 槽之前和之后渲染 DOM。这类似于在执行回调之前和之后执行代码。
  • 您可以将 yield 块包装在 DOM 中。这类似于将回调传递给另一个被执行的函数。
  • 但是您不能检查或改变调用者设置的内容作为块的内容。

该功能有助于分离关注点并在组件之间建立清晰的边界。如果您将其视为一种限制,那么您的应用程序中不同组件之间的界限很可能不够清晰。


推荐阅读