Ember.js Ember.Component是否可以同时具有块和非块形式?
我想构建一个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}} {{
{{#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开始,它仍然是模板
。