相关模板部分如下:
<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集合中时,我都看不到页面上有任何更新内容。
当我打印到手动记录时,我能够看到db中的值,然后调用:Template.list_of_links.my_playlist()确实给了我想要的输出。
另外,youtube_link是Links集合中的一个字段,我不确定我在link_item模板中使用它的方式。
答案 0 :(得分:1)
如果你摆脱下面的位,会发生什么?这完全没必要。
Template.link_item.youtube_link = function () {
return this.youtube_link;
};
不起作用的原因是因为模板助手中的this
不是实际的数据位。来自Meteor docs:
模板实例对象在创建,呈现和销毁的模板回调中作为this的值被找到,并作为事件处理程序的参数。
答案 1 :(得分:0)
{{youtube_link}}
模板中的 link_item
不会返回任何内容,因为它是从数据库传递值的list_of_links
模板。所以我猜你的DOM实际更新了,只是它是一个空的附加,如下:
<li class="link">
<div class="destroy"></div>
<div class="link-title"></div>
</li>
因此,您需要向youtube_link
模板添加link_item
- 帮助器,并从那里返回您想要的值。
(我不记得我的想法,但我认为你可以这样做):
Template.link_item.youtube_link = function () {
return this.youtube_link;
};