【发布时间】:2016-04-07 01:01:20
【问题描述】:
我有一个显示集合数据的模板(“ImageView”),我在两条不同的路线上使用它来显示不同的内容:一条路线用于显示所有数据,另一条路线用于显示属于特定的数据用户。
因为我的布局包含各种组件,所以我将 ImageView 模板嵌入到每条路线的主模板(“相册”和“个人资料”)中。
我在两个主要模板上设置了模板级别订阅,如下所示:
Template.profile.onCreated ( function() {
Tracker.autorun(function() {
Meteor.subscribe('images', Meteor.userId());
});
});
和
Template.Album.onCreated (function() {
Tracker.autorun(function() {
Meteor.subscribe('images');
}); })
我在服务器上有这样的发布功能:
Meteor.publish('images', function ( user_id) {
findQuery={}
if (user_id) {
findQuery = {userId: user_id};
}
return Images.find(findQuery);
});
问题是,当我在两个页面之间的路径之间导航时,模板“ImageView”不会反应性地更新其内容,直到我按下刷新。 (如果我手动输入网址并按回车,它也可以正常工作)。模板中是否有缓存?但它们似乎在路由更改时按预期创建和销毁(签入 onCreated 和 onDestroyed 回调)。
我在发布功能中记录了控制台,并确保在两条路线之间导航时更改了发布,但客户端没有相应更新。我也尝试过响应式发布包 Template.subscriptionReady,FlowRouter.reload() ,但它们并没有解决问题。
谁能告诉我这个问题可能是什么?顺便说一句,我正在使用 FlowRouter。
感谢任何输入。非常感谢。
【问题讨论】:
-
我不确定这是否是问题的原因,但您不应该在
onCreated中使用Tracker.autorun,因为当模板被销毁时您必须手动停止计算。请改用Template.autorun。 -
非常感谢!很好地解决了这个问题。
-
我将评论添加为答案,因此您可以接受。 :)
标签: templates meteor meteor-blaze