【问题标题】:Template.dynamic fails with Uncaught Error: {{#each}}Template.dynamic 因未捕获错误而失败:{{#each}}
【发布时间】:2015-05-14 23:05:26
【问题描述】:

{{> myTemp}} 工作正常,但 {{> Template.dynamic template="myTemp"}} 产生

未捕获的错误:{{#each}} 目前只接受数组、游标或错误值。

不知道去哪里看

-- 更新以添加每个块--

{{#each this}}
      <section class="blog-post">
        {{#if isInRole 'mdblog-author'}}
          {{> blogControls }}
        {{/if}}
          <header>
              <h2><a href="{{pathFor route='blogPost'}}">{{title}}</a></h2>
                  <span class="info">{{_ "posted_by"}}<span class="author">{{author}}</span>
                      <time>{{mdBlogDate date}}</time>
                  </span>
          </header>
          <summary>
            {{{summary}}} <a href="{{pathFor route='blogPost'}}">{{_ "read_more"}}
              <i class="fa fa-long-arrow-right"></i></a>
          </summary>
      </section>
  {{else}}
      {{_ "waiting_for_posts"}}
  {{/each}}

【问题讨论】:

  • 你能用你正在迭代的辅助变量显示#each循环吗?
  • 更新问题@MattK

标签: meteor meteor-blaze


【解决方案1】:

this 是一个指向数据上下文的对象,它是一个对象(或未定义,但如果是这种情况,它不会抛出错误)。您不能迭代对象。

您想遍历存储在数据上下文(自然非反应性)或 mongo 游标(反应性)中的数组。如果您的目标是遍历数据上下文中的每个项目,那么就像将对象的值转换为数组一样简单。我不确定您的目标到底是什么,但您可能想要遵循以下内容:

 sampleDoc: function () {
    var valArr = [];
    for (var key in this) {
      if (this.hasOwnProperty(key)) {
        valArr.push(this[key]);
      }
    }
    return valArr;
 }

如果您也需要密钥,只需创建一个密钥数组并推送key 而不是this[key] 如果您需要反应,只需在开头添加 .depend()

【讨论】:

    猜你喜欢
    • 2013-08-06
    • 2020-08-20
    • 2017-10-27
    • 2012-07-30
    • 2017-11-12
    • 1970-01-01
    • 1970-01-01
    • 2014-08-09
    • 1970-01-01
    相关资源
    最近更新 更多