Ember has-block 检测空块

Ember has-block to detect empty block

在ember octane中,有没有办法检测{{yield}}不是空字符串?

如果我们像这样使用空组件,has-block 函数将 return true <IntakeFormElement></IntakeFormElement>false<IntakeFormElement/>.

如何让 <IntakeFormElement></IntakeFormElement><IntakeFormElement/> return 都为假?

{{#if (has-block)}}
    Content: {{yield}}
{{else}}
    No block
{{/if}}

Ember 旋转码:

https://ember-twiddle.com/7bf99058ec9f125b8b88dd73350ad3b4?openFiles=templates.components.intake-form%5C.hbs%2Ctemplates.components.intake-form%5C.hbs

由于空块仍然是块,所以有一种方法可以告诉开发人员他们不应该将您的特定组件与空块一起使用。 通过 template-lint 插件!

Here is an example astexplorer.net 演示了您要使用的逻辑。

    ElementNode(node) {
      if (node.tag === 'MyComponent') {
        if (node.children.length === 0) {
          console.log(`use ember-template-lint's log function to log a lint error`);
        }
      }
    }

以下是创建 template-lint 插件的文档:https://github.com/ember-template-lint/ember-template-lint/blob/master/docs/plugins.md

还有一些示例 template-lint 插件: