【发布时间】:2015-07-16 14:38:56
【问题描述】:
我有一个关于模板订阅的问题。我发现,不是错误,而是一种不酷的行为,请考虑以下几点:
路由器(铁路由器):
this.route('test', {
path '/test/:_id'
});
然后模板订阅:
Template.test.onCreated(function () {
this.subscribe('mydata', Router.current().params._id);
});
基本上是一个路由,其中订阅链接到由路由参数给出的 id。
那么,如果我有两个这样的链接:
<a href="/test/hello">hello</a>
<a href="/test/hi">hello</a>
由于 /test/hello 和 /test/hi 共享相同的模板,因此来自 test 的 onCreated 仅被调用一次(与 onRendered 相同)。这意味着订阅将存在于 id: hello,但不存在于 id: hi(因为 onCreated 会为 hello 调用一次)。
我使用 subs-manager 包在路由中移动订阅时避免了这个问题。然而,我很想知道如何在模板中处理此类问题(我只是更喜欢模板比路由更了解他需要执行哪些订阅的想法)。
简而言之,如果有些人没有得到它: 两个页面,相同的路由(带参数),相同的模板,onCreated/onRendered 只调用了一次,但是,路由参数改变了,所以它应该有两个订阅。但是由于 onCreated/onRendered 只被调用一次(因为它们共享相同的模板),所以只有一个订阅真正存在。这种情况如何处理,使用模板订阅方式?
【问题讨论】:
标签: templates meteor publish-subscribe