Meteor.js - 循环遍历对象数组

时间:2015-11-13 09:00:53

标签: javascript meteor meteor-blaze meteor-helper

我有一个小型列表构建应用程序,几乎是一个待办事项列表。

我有一个名为'lists'的集合

Lists = new Meteor.Collection('lists')

我有一个提交到此集合的表单,并且工作正常。

我的模板在这里:

<template name="list">
  {{#with list}}
    <ul>
    {{#each links}}
    <li>PLEASE WORK! >>>> {{title}}</li>
    {{/each}}
    </ul>
  {{/with}}
</template>

我的助手在这里:

  Template.list.helpers({
    list: function () {
      currentListId = Session.get('currentListId')
      return Lists.find({
        _id : currentListId
      });
    },
    title: function () {
      return this.title
    }
  })

我知道我订阅了数据库,因为当我这样做时:

Lists.find({_id : currentListId}).fetch()

它返回一个看起来像

的对象
_id: "mrkpjGW2"
createdAt: 1447401698770
items: Array[3]
__proto__: Object

和内部项目

items: Array[3]
    0: Object
        createdAt: 1447402263732
        owner: "3oyKZKhdPZyDkWnZm"
        title: "google.com"
        __proto__: Objec

所以我想循环遍历项目并获得标题。

3 个答案:

答案 0 :(得分:0)

我没有看到links帮助者。你迭代链接,但它是否定义?您的示例中也有不同的模板名称 - HTML代码中的list和JS中的linkList

答案 1 :(得分:0)

你有{{#each links}}但链接是什么?我没有看到它在任何地方定义。

当你回来时......

list: function () {
      currentListId = Session.get('currentListId')
      return Lists.find({
        _id : currentListId
      });
    }

您可以直接对其进行迭代,而不是在顶部进行{{#with list}},然后将其取出并使用下面的{{#each list}}。

<template name="list">
    <ul>
    {{#each list}}
    <li>PLEASE WORK! >>>> {{title}}</li>
    {{/each}}
    </ul>
</template>

答案 2 :(得分:0)

你已经使用了帮助器给列表开火,这就足够了,也不需要为标题创建一个帮助器。你可以直接从blaze迭代项目和获取标题。
根据我的理解,你想迭代items数组,并从每个项目中获取标题。所以,在javascript中,

Template.list.helpers({
    list: function () {
        currentListId = Session.get('currentListId')
        return Lists.find({
        _id : currentListId
      }).fetch();
    }
  })

在你的HTML中,

<template name="list">
    <ul>
        {{#each list}}
            <li>PLEASE WORK! >>>> {{title}}</li>
        {{/each}}
    </ul>
</template>