Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.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
Ember.js Ember.Component是否可以同时具有块和非块形式?_Ember.js_Handlebars.js - Fatal编程技术网

Ember.js Ember.Component是否可以同时具有块和非块形式?

Ember.js Ember.Component是否可以同时具有块和非块形式?,ember.js,handlebars.js,Ember.js,Handlebars.js,我想构建一个Ember.Component,它既可以以块的形式使用,也可以在需要某些默认行为时不使用块 例如,以块形式: {{#my-helper}} ... {{/my-helper}} {{my-helper}} 或非块格式: {{#my-helper}} ... {{/my-helper}} {{my-helper}} 其中,帮助器模板能够检测到没有块,并相应地进行操作。例如,如果有某种方法来检测块,那就好了: {{#if hasBlock}} {{yield}} {{

我想构建一个Ember.Component,它既可以以块的形式使用,也可以在需要某些默认行为时不使用块

例如,以块形式:

{{#my-helper}}
  ...
{{/my-helper}}
{{my-helper}}
或非块格式:

{{#my-helper}}
  ...
{{/my-helper}}
{{my-helper}}
其中,帮助器模板能够检测到没有块,并相应地进行操作。例如,如果有某种方法来检测块,那就好了:

{{#if hasBlock}}
  {{yield}}
{{else}}
  default output
{{/if}}
对于我的需求,我需要有一些方法,只有在没有块的情况下才能输出一些东西

有什么办法吗

更新:
如果你不明白为什么我的问题和公认的答案是一样的,那是因为余烬碰巧采用了新的语法,这正是我最初想象的理想。当我第一次问这个问题时,发现有一种没有文档记录的方法可以使用
{{{{{if template}}
来实现这一点,但是这在Ember 2.x中已经被弃用了,并且有了新的语法
{{{{if hasBlock}
这恰好与我的问题措辞相匹配。

组件中
您需要检查
hasBlock的值

{{#if hasBlock}}
  {{yield}}
{{else}}
  <p>Default content for inline (non-block) form of the component.</p>
{{/if}}
{{#if hasBlock}
{{yield}}
{{else}
组件的内联(非块)形式的默认内容

{{/if}

这里有一个JSBin:

指向文档的链接在这里:

文档没有明确说明模板属性是以这种方式使用的。由于
Ember.Component
类继承自
Ember.View
类,因此可以推断组件模板的行为类似于
Ember.View
布局模板。

“模板”已被弃用,取而代之的是部分模板,例如

{{#if partial}}
  {{yield}}
{{else}}
  <p>Default content for inline (non-block) form of the component.</p>
{{/if}}
{{#if partial}
{{yield}}
{{else}
组件的内联(非块)形式的默认内容

{{/if}
目前不推荐直接访问
模板
,但在这种情况下,应该使用标记为
hasBlock
属性的功能(基本上是在引擎盖下使用
!!模板

功能标志为
ember view组件块信息


这里有一个指向合并拉取请求的链接:

它可以工作,但我以前从未见过这个
模板。你能把我链接到文档吗?我没有找到任何文档,只是看了一下代码。我也确认这是有效的…接受。希望它成为API的一部分,而不仅仅是实现的一个有用属性。从Ember 1.8.1开始,它仍然是
模板