EMBER:仅当组件已屈服时才渲染div块

fquxozlt  于 2023-08-04  发布在  其他
关注(0)|答案(1)|浏览(221)

我有以下的HBS片段:

  1. <div class='photo-viewer-control' local-class='leftbar'>
  2. {{yield to='leftbar'}}
  3. </div>

字符串
我正在使用leftbar组件:

  1. <Viewer>
  2. <:leftbar>
  3. <Infos
  4. @image={{this.currentImage}}
  5. />
  6. </:leftbar>
  7. </Viewer>


我只想在leftbar已经产生的情况下呈现div。
我已经尝试了以下操作:

  1. {{#if (has-block 'leftbar')}}
  2. <div class='photo-viewer-control' local-class='leftbar'>
  3. {{yield to='leftbar'}}
  4. </div>
  5. {{/if}}


我添加了has-block,但是当没有leftbar时,div仍然在渲染。

pbpqsu0x

pbpqsu0x1#

你的代码非常接近!
为了避免呈现:leftbar,请省略以下代码块:

  1. <Viewer>
  2. no left bar will be rendered
  3. </Viewer>

字符串
这是一个demo of how this works

  1. const Viewer = <template>
  2. {{yield}}
  3. {{#if (has-block 'leftbar')}}
  4. <div>
  5. {{yield to="leftbar"}}
  6. </div>
  7. {{/if}}
  8. </template>;
  9. <template>
  10. <Viewer>
  11. <:leftbar>
  12. leftbar content
  13. </:leftbar>
  14. </Viewer>
  15. <Viewer>
  16. no leftbar content
  17. </Viewer>
  18. </template>


(this demo使用了新的“gjs”格式--如果不熟悉,请点击此处教程:https://tutorial.glimdown.com

展开查看全部

相关问题