我正在使用铁路由器。我有一个看起来像这样的 RouterController:
var loggedInUserController = RouteController.extend({
layoutTemplate: "GenericLayout",
waitOn: function () {
return Meteor.subscribe("TheDataINeed");
}
});
我定义了一个路由,它使用这个控制器等待'TheDataINeed':
Router.route("/myapp", {
name: "Landing",
controller: loggedInUserController,
data: function () {
if(this.ready()){
return {content: "page-landing"};
}
}
});
现在,问题是我订阅的数据是有条件的:意思是,根据用户的角色,我发布不同的数据,如下所示:
if (!Roles.userIsInRole(this.userId, 'subscribed') ) {
return [
myData.getElements({}, { fields: { _id: 1, title: 1}, limit: 5 })
];
} else {
return [
myData.getElements({}, { fields: { _id: 1, title: 1} })
];
}
当用户的角色不是“订阅”时,我将发布的数据限制为 5 个元素。
问题是发布不是被动的,所以当用户第一次将他的角色更改为“订阅”并且我导航到我的路线(“/myapp”)时,用户仍然看到有限数量的元素而不是所有元素.
当我加载这条路线时,有没有办法手动重新触发订阅?如果可能的话,我想在不向我的应用程序添加新包的情况下执行此操作。