具有自己的数据源的可重用 ember 组件

Reusable ember component with its own data source

我有一个基于 <select> 的下拉组件,我希望能够将其放入我的 ember 应用层次结构中的任何模板中。

这会显示站点上所有文章(模型)的列表。但是,每当我使用此组件时,我所在的路由都需要加载数据并传递给模板。

问题: 如何仅在渲染组件时加载此数据?

还有我已经reading this了,但仍然没有想出一个好的解决方案。我希望组件提供数据源,但这似乎不受欢迎。

在我的组件预渲染中只做一个 ajax 请求会很糟糕吗?

如果您需要预加载数据,则可以使用 initializers 为您完成。如果需要,您可以使用此数据并注入到任何 controller 、 route 或所有这些。这是一种更易于维护的方式。

对于您的情况,您可以让特定的控制器注入文章。然后在其他需要的控制器中使用 needs 使用此控制器数据,从而进入组件。

通过这种方式,您可以获得所有组件实例的数据。在组件内部传递存储对象主要是一种反模式 ( 取决于用例 ) .

组件应该没有数据收集的麻烦,应该专注于逻辑和表示。

如果想进一步了解如何使用initializers,可以