如何通过灰烬模板中的ID查找对象

时间:2018-09-16 20:56:25

标签: ember.js

我有这样的数据结构:

let colors = {colorArray: [{id: 1, color: "blue"}, {id: 2, color: "red"}], anotherVariable: "anotherValue"}

我有一个each助手,像这样:

{{#each posts as |post|}}
    <div>...</div>
{{/each}}

我想在colors.colorArray中返回与我要遍历的帖子的ID相对应的对象。我不确定该怎么做。我尝试使用ember-composable-helper,但没有日志记录(也没有错误)。这是我尝试过的:

{{#each posts as |post|}}
   {{#with (find-by 'id' post.id colors.colorArray) as |post|}}
      {{post}}
   {{/with}}
{{/each}}

我做错了什么?我还有其他方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

有几种方法可以解决这个问题:

  • 您可以将帖子和数组传递给组件。该组件应具有返回颜色的计算属性。然后在组件模板中使用该计算出的属性
  • 如果您的Ember版本使用let helper而不是with,请尝试使用它。 With非常容易发生意外。
  • 您可以将计算的属性直接添加到帖子模型(如果您在应用程序中使用模型),这将返回正确的颜色。然后,您可以在应用程序中的任何位置进行post.color。当很多地方需要颜色时,这很好。
  • 您可以编写一个(常规)助手,该助手以帖子和颜色作为参数并返回颜色

在某些用例中,可组合帮助程序确实很方便,但是此代码非常适合在没有插件的情况下编写。