Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否有一种方法可以判断一个组件';s有块是空的吗?_Javascript_Ember.js - Fatal编程技术网

Javascript 是否有一种方法可以判断一个组件';s有块是空的吗?

Javascript 是否有一种方法可以判断一个组件';s有块是空的吗?,javascript,ember.js,Javascript,Ember.js,我试图创建一个上下文组件,当一个头未在生成的块中传递时,它可以提供一个默认头。通常,我可以使用has block helper来判断组件是否具有块内容,但该组件将始终具有块内容。我想我需要的是一种方法来判断生成的组件是否有块内容。例如: {{! panel.hbs }} <header> {{yield header=(component "blank-template")}} {{#if (yieldedHeaderEmpty)}} <h1

我试图创建一个上下文组件,当一个头未在生成的块中传递时,它可以提供一个默认头。通常,我可以使用has block helper来判断组件是否具有块内容,但该组件将始终具有块内容。我想我需要的是一种方法来判断生成的组件是否有块内容。例如:

{{! panel.hbs }}
<header>
  {{yield header=(component "blank-template")}}
  {{#if (yieldedHeaderEmpty)}}
    <h1>My Default Header</h1>
  {{/if}}
</header>
<section>
  {{yield body=(component "blank-template")}}
</section>
<footer>
  {{yield footer=(component "blank-template")}}
</footer>
{{!panel.hbs}
{{yield header=(组件“空白模板”)}
{{#如果(yieldedHeaderEmpty)}
我的默认标题
{{/if}
{{yield body=(组件“空白模板”)}
{{yield footer=(组件“空白模板”)}
我只想在生成的“header”部分为空时显示默认的header。我可以创建一个header组件,然后可以像这样使用has块:

 {{! panel.hbs }}
    <header>
      {{yield header=(component "my-header")}}
    </header>
...



 {{! MyHeader.hbs}}
     {{#if (has-block)}}
          {{yield}}
     {{else}}
         <h1>My Default</h1>
     {{/if}}
{{!panel.hbs}
{{yield header=(组件“我的头”)}
...
{{!MyHeader.hbs}
{{{#如果(有块)}
{{yield}}
{{else}
我的默认
{{/if}

从功能上来说,我认为这会起作用,但“我的标题”组件的唯一用途是用于这个“面板”组件,而且似乎是浪费。思想开放。谢谢

Ember core最近接受了“命名块”的RFC,该RFC正是为此目的而设计的。使用此功能,我们可以命名可缩块并使用其名称访问它们,如:

template.hbs:

<Panel>
  <:header>This is a customized header</:header>
</Panel>

这是一个自定义标题
panel.hbs:

{{#if (has-block "header")}}
  {{yield to="header"}}
{{else}}
  <header> This is the default header </header>
{{/if}}
{{#if(有块“头”)}
{{yield to=“header”}
{{else}
这是默认的标题
{{/if}
这是尚未降落在灰烬核心。幸运的是,我们从
3.12.4
中获得了支持此功能的官方polyfill: