0
阅读有关发布REST资源并停止订阅的文档后,我就能够编写这样的事:如何在停止订阅流星后重新订阅?
(使用角流星)
发布:
Meteor.publish('numbers', function(token){
const res = HTTP.get(API, { headers: {'token-header': token }});
_.forEach(res.data, (value, key) => {
this.added('numbers', key, { name: value });
});
this.ready();
});
订阅:
class Ctrl{
constructor($scope, $reactive, $localStorage){
'ngInject';
$reactive(this).attach($scope);
this.subscriber = this.subscribe('numbers',() => {
return [$localStorage.token];
});
this.helpers(){ numbers(){ return Numbers.find(); }}
}
refresh(){
this.subscriber = this.subscribe('numbers',() => {
return [$localStorage.token];
}, {
onReady:() => { console.log('stopping refresh animation'); }
});
}
}
//more Angular code...
我们假设这些是API返回的值:
[ 'Alpha', 'Bravo', 'Charlie', 'Delta', 'Echo', 'Foxtrot' ]
它在首页加载时运行良好。然而,我注意到,当我只问阿尔法,布拉沃,并查理上刷新,三角洲,回声和狐步仍停留在Minimongo缓存。
我尝试在刷新功能中添加subscriber.stop()
以从缓存中删除数据,但我无法再获得this.subscribe()
再次运行。
所以我有两个问题:
- 如何停止订阅后重新订阅?
- 有没有其他方法可以再次订阅?
另一方面,我正在寻找阿波罗作为替代。我还没有真正尝试过,但是如果我知道我在做什么,我们会推荐它用于制作吗?
我相信你应该在发布之后清除退订(使用回调)。就像你在创建订阅时调用'this.added'一样,当它停止时(在服务器上),你应该完成'this.removed'。这是手动完成的成本。 – MasterAM