Meteor - 订阅不会更新集合显示直到刷新(模板中的缓存?)

时间:2016-01-03 05:58:25

标签: templates meteor meteor-blaze

我有一个模板(" 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。

任何意见都表示赞赏。非常感谢你。

1 个答案:

答案 0 :(得分:0)

您不应在Tracker.autorun中使用onCreated,因为您必须在销毁模板时手动停止计算。请改用this.autorun。它使用Template autorun

相关问题