【问题标题】: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}}