【问题标题】:Ember Handlebars template conditionally pass some attributeEmber Handlebars 模板有条件地传递一些属性
【发布时间】:2020-06-11 09:18:28
【问题描述】:

我有一个自定义网格组件,我正在尝试实现一个自定义标题(作为参数传递给 my-grid) 但是,我希望“customHeader”是有条件的。即只有当某些条件为真时,我才需要添加该属性,否则根本不应该设置/传递该属性。 是否可以在 Handlebars 模板本身内实现这一点?

{{#my-grid
    model=myModel
    customHeader=(component 'my-custom-grid-header')
    as |grid|}}

{{/my-grid}}

【问题讨论】:

    标签: javascript ember.js handlebars.js


    【解决方案1】:

    没有办法做到这一点。传递给组件的参数列表是在构建时定义的。

    但是你可以这样做:

    customHeader=(if @something (component 'my-custom-grid-header') null)
    

    那么如果在组件内部使用{{#if @customHeader}},它将是false

    但是,glimmer 组件中的Object.keys(this.args) 将始终包含customHeader。没有办法避免这种情况。

    【讨论】:

      【解决方案2】:

      它很冗长,但如果你真的不想通过它,你可以这样做:

      {{#if customeHeader}}
        {{#my-grid
          model=myModel
          customHeader=(component 'my-custom-grid-header')
          as |grid|}}
        {{/my-grid}}
      {{else}}
        {{#my-grid
          model=myModel
          as |grid|}}
        {{/my-grid}}
      {{/if}}
      

      【讨论】:

        猜你喜欢
        • 2016-02-10
        • 1970-01-01
        • 2016-08-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多