0

相关模板部分如下:

<template name="list_of_links">
   <ul id="item-list">
        {{#each my_playlist}}
            {{> link_item}}
        {{/each}}
    </ul>
</template>

<template name="link_item">
<li class="link">
    <div class="destroy"></div>
    <div class="link-title">{{youtube_link}}</div>
</li>
</template>

客户端中的相关Javascript是:

  //Songs from session
    Template.list_of_links.my_playlist = function () {
      return Links.find({sess: Meteor.default_connection._lastSessionId}, {sort: {score: -1}});
    };

但是,每当我通过文本输入将内容插入到 Links 集合中时,我都看不到页面上的任何内容正在更新。

但是,当我手动打印到日志时,我能够看到数据库中的值,并且调用: Template.list_of_links.my_playlist() 确实给了我所需的输出。

此外,youtube_link 是 Links 集合中的一个字段,我不确定我在 link_item 模板中使用它的方式。

4

2 回答 2

1

如果你只是摆脱下面的位会发生什么?这是完全没有必要的。

Template.link_item.youtube_link = function () {
    return this.youtube_link;
};

不起作用的原因是因为this在模板帮助器中不是实际的数据位。来自Meteor 文档

模板实例对象作为 this 的值在创建、渲染和销毁的模板回调中找到,并作为事件处理程序的参数。

于 2013-11-15T00:23:25.017 回答
0

{{youtube_link}}link_item模板中不会返回任何内容,因为它是list_of_links从数据库中传递值的模板。所以我猜你的 DOM 确实更新了,只是它是一个空的,被附加了,就像这样:

<li class="link">
    <div class="destroy"></div>
    <div class="link-title"></div>
</li>

所以你需要youtube_link在模板中添加一个 -helperlink_item并从那里返回你想要的值。

(我不记得了,但我认为你可以这样做):

Template.link_item.youtube_link = function () {
  return this.youtube_link;
};
于 2013-11-14T22:44:48.260 回答