Template.dynamic因未捕获错误而失败:{{#each}}

时间:2015-05-13 16:45:05

标签: meteor meteor-blaze

{{> myTemp}}工作正常但{{> Template.dynamic template="myTemp"}}收益率

  

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

不确定在哪里看

- 更新以添加每个块 -

{{#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}}

1 个答案:

答案 0 :(得分:0)

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

您希望迭代存储在数据上下文中的数组(自然是非反应性的)或mongo游标(被动)。如果您的目标是迭代数据上下文中的每个项目,那么就像将对象的值转换为数组一样简单。我不确定你的目标是什么,但你可能想要遵循这样的事情:

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

如果您还需要按键,只需创建一个按键阵列&amp;推key代替this[key] 如果您需要反应,请在开头粘贴.depend()