【问题标题】:Assertion failed helper when I use custom yields in my application当我在我的应用程序中使用自定义产量时,断言失败助手
【发布时间】:2019-12-25 20:32:05
【问题描述】:

我正在使用 Ember v2.5.1。

我正在尝试这个解决方案,因为我需要在同一个组件中使用两个自定义产量:

How can I yield multiple pieces of content into an ember.js component template?

这是我的代码:

// component 
{{#father-component as |f|}}
  {{#f.left-content}} 
    This is a content
  {{/f.left-content}}
  {{#f.right-content}}
    This is a another content
  {{/f.right-content}}
{{/father-component}}

// father-component
<div class="left">
  {{yield (hash left-content = (component "foo-content"))}}
</div>
<div class="right">
  {{yield (hash right-content = (component "foo-content"))}}
</div>

// foo-content 
{{yield}}

https://ember-twiddle.com/ 这个works nicelly 中,但在我的本地主机中这不起作用并返回此错误

断言失败:找不到名为“f.right-content”的助手

有什么帮助吗?

我使用应用程序导出组件,并分别导出 js 和 hbs 路径。


编辑

当我在父组件中添加 {{log f}} 时会发生这种情况。

【问题讨论】:

  • 我会仔细检查您的模板以确保没有错字。这在旋转中起作用的事实表明它可能是一个简单的错误。为了安全起见,也许可以将旋转模板/组件文件复制粘贴到您的本地项目中。
  • 试试f.rightContentf.leftContent
  • 嗯..我使用的是ember +v2.5,我尝试了两个cmets但仍然发生同样的错误=(Assertion Failed: A helper named 'f.rightContent' could not be found
  • @MarceloBoni 尝试在父组件模板块中记录f{{log "f is: " f}}
  • 我去在问题中添加快照。

标签: ember.js


【解决方案1】:

ember repo 中有一个问题,讨论了您用于多个收益的技巧。 ember 核心团队成员 Robert Jackson (@rwjblue) 在a comment 中表示,这种技术之所以有效,是因为 Ember 3.6 中已修复了一个错误。我没有仔细检查,但我猜这个错误是在你使用的 2.5.1 之后添加的。 Ember Twiddle 似乎只支持存在此错误的版本。

TL;DR:如果您想使用这种方法,您需要升级到包含此错误的版本。但我强烈建议不要这样做,因为它不受支持且不适用于 Ember 3.6+。

很遗憾Yieldable named blocks RFC 还没有实现。您可以在related tracking issue 中跟踪状态。据我所知,目前还没有可用的 polyfill。

【讨论】:

  • 知道如何在不利用这个“hack”的情况下实现这样的东西吗?
  • 我认为如果你生成一个无操作组件而不是 undefined 应该没问题。但尚未测试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-23
相关资源
最近更新 更多