Ich verwende den Iron Router. Ich habe einen RouterController, die etwa wie folgt aussieht:Meteor-Abonnement wird trotz WaitOn nicht aktualisiert.
var loggedInUserController = RouteController.extend({
layoutTemplate: "GenericLayout",
waitOn: function() {
return Meteor.subscribe("TheDataINeed");
}
});
Und ich habe eine Route definiert, die diesen Controller für die 'TheDataINeed' zu warten, verwendet:
Router.route("/myapp", {
name: "Landing",
controller: loggedInUserController,
data: function() {
if(this.ready()){
return {content: "page-landing"};
}
}
});
Jetzt ist das Problem, die Daten-I abonniert bin zu bedingt ist: das heißt, abhängig von der Rolle des Benutzers, veröffentliche ich verschiedene Daten, etwa so:
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} })
];
}
Wenn die Rolle des Benutzers nicht ‚abonniert‘, beschränke ich die Daten t veröffentlicht o 5 Elemente.
Das Problem ist Veröffentlichung ist nicht reaktiv, wenn der Benutzer seine Rolle zum ersten Mal zu "abonniert" ändert und ich zu meiner Route ("/ myapp") navigiere, sieht der Benutzer stattdessen die begrenzte Anzahl von Elementen von allen.
Gibt es eine Möglichkeit, das Abonnement manuell neu auszulösen, wenn ich diese Route lade? Wenn möglich, möchte ich dies tun, ohne neue Pakete zu meiner App hinzuzufügen.