我有一个模板使用{{#each Collection}}
渲染我的收藏夹,我使用铁路由器来路由此模板:
Router.route('/home', function () {
this.render('home');
this.layout('header');
});
我怎样才能使用"书籍"过滤器按钮,因此铁路由器将该过滤器应用于订阅,因此我只能看到我的集合的过滤版本,如下所示:
Collection.find({category: "books"});
答案 0 :(得分:0)
有很多方法可以解决这个问题,但一种简单的方法是定义一个以类别为参数的子路径:
Router.route('/collections/:category',{
name: 'collections',
layoutTemplate: 'header',
data(){
return Collections.find({category: this.params.category});
}
});
然后您的按钮代码可以Router.go('/collections/books')
,但您现在可以拥有多个按钮,每个按钮都绑定到不同的类别。
答案 1 :(得分:0)
根据此处https://guide.meteor.com/data-loading.html#organizing-subscriptions的建议,您可以在模板中管理订阅,而不是在路线中。所以你可以这样做:
import {ReactiveDict} from 'meteor/reactive-dict';
import {Template} from 'meteor/templating';
Template.home.onCreated(function(){
var that = this;
that.state = new ReactiveDict();
//that.state.set('selected-category',YOUR_DEFAULT_CATEGORY);
that.autorun(function(){
that.subscribe('subscription-name',that.state.get('selected-category'));
});
});
Template.home.events({
'click .js-category':function(e,tpl){
let category = tpl.$(e.currentTarget).data('category');
tpl.state.set('selected-category',category);
}
});
在你的模板中:
<button type="button" data-category="books" class="js-category">Books</button>
希望这有助于您找到适合您的
的解决方案