【问题标题】:In an ember component template how can I use 'if' to check for at least one of an array having a property equal to X?在 ember 组件模板中,如何使用“if”来检查属性等于 X 的数组中的至少一个?
【发布时间】:2015-07-16 13:44:35
【问题描述】:

我的组件传递了一个notification

一个通知有一个account,一个帐户有多个contacts

所以我可以轻松地做类似的事情

{{#if (is-greater-than notification.account.contacts.length 0)}}
  <p>stuff</p>
{{/if}}

要检查联系人是否存在,但如果我只想显示至少一个联系人有firstName'John',我怎么能只在组件模板中执行此操作?或者如果模板中不可能,那么下一个最佳方法是什么?

我尝试在我的组件中使用 isHidden 属性,然后在 didInsertElement 钩子中循环通过联系人,然后进行通信以检查自己 - 但是我发现 contact.get('communications').forEach 没有受到打击,因为该级别的数据没有那时已从服务器中拉出。

【问题讨论】:

  • 您的第二个问题与这个问题有点正交。您能否从中删除第二个问题并将其移至自己的问题?答案在任何方面都不太相似,因此最好将它们分开。
  • 有道理,我在这里stackoverflow.com/questions/31459209/… 为嵌套的“has-any”辅助函数写了第二个问题。主要问题是承诺没有在嵌套级别解决。

标签: ember.js


【解决方案1】:

对于第一个问题,您可以编写一个助手来做到这一点:

// helpers/contains-john.js
export default function(array) {
    return array.any((item) => item.get('firstName') === 'John');
};

然后像上面一样将它用作子表达式:

{{#if (contains-john notification.account.contacts)}}
    Stuff
{{/if}}

【讨论】:

    猜你喜欢
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2016-04-06
    相关资源
    最近更新 更多