【问题标题】:Ember: Call a component action from a controllerEmber:从控制器调用组件操作
【发布时间】:2016-04-22 13:22:11
【问题描述】:

我有一个运行良好的组件,现在我需要在控制器中调用它。

场景:我有一个 ember 应用程序,我有一个更新按钮控制器,我做了一个组件,它只显示一个 toast(Materializecss) 并带有一些消息作为参数传递给组件,按钮和 toast 都在工作好分开。我需要在按钮控制器内部调用此组件以向用户显示更新是否成功或未使用我所做的此组件。关于如何在控制器内调用此组件的任何建议?谢谢

【问题讨论】:

  • 您不能从外部“调用”组件。你可以传递一个属性,然后对属性做任何你想做的事情,包括如果你真的需要观察它。但是模板会自动观察属性并根据其值调整 DOM。
  • 感谢您的回答,但我没有康复。假设我有一个名为 callback-toast.js 的组件,在其中我有一个名为“run”的操作,它在用户屏幕上运行 toast,我还有一个名为 button-controller.js 的控制器。在按钮控制器内部,如何引用来触发组件?
  • 你不能。这不是组件的工作方式。

标签: ember.js


【解决方案1】:

看看我创建的ember-twiddle,看看它是否符合要求,你想做什么?

您不应该考虑“调用组件”,而是如何将更新的属性/数据推送到组件。

【讨论】:

    【解决方案2】:

    Ember 依赖于“Data Dow Actions Up”模式。这意味着您不能从控制器显式调用组件操作。 (例如见https://dockyard.com/blog/2015/10/14/best-practices-data-down-actions-up

    相反,更好的设计应该是定义一个服务来管理数据:要“烤”的消息。然后通过注入您的控制器使该服务可用。您将能够调用方法来注册新消息并生成新数据。

    还提供一个组件模板(将包含在您自己的模板中),该模板将负责显示新消息等。服务管理的数据的每次更改都会导致组件模板更新。

    你一定要看看https://www.npmjs.com/package/ember-toastr

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-24
      • 2013-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多