This method provides the support for Meteor.subscribe
.
The method expect the first parameter to be the publication name (as defined in the server).
The second argument is a function, which returns an array of arguments as defined in the publication on the server side. Those arguments can be reactive with the help of getReactively.
The third parameter is an optional callback which operates exactly like the callbacks in Meteor.subscribe.
The subscribe
method is part of the ReactiveContext
, and available on every context
and $scope
and will stop
automatically when it's context ($scope) is destroyed.
Tip: You can just use the first argument, the rest is optional.
Name | Type | Details | Required |
---|---|---|---|
Publication name | String | The name of the publication, as defined in the server side using Meteor.publish . |
Yes |
Arguments Function | Function | A function, which expected to return an array of arguments that will passed to the subscription. | No |
Result Callback |
Function Object |
May include onStop and onReady callbacks. If there is an error, it is passed as an argument to onStop . If a function is passed instead of an object, it is interpreted as an onReady callback. |
No |
The method returns exactly the same parameters as Meteor.subscribe.
myModule.controller('MyCtrl', ['$scope', '$reactive', function($scope, $reactive) {
$reactive(this).attach($scope);
this.subscribe('users');
}]);
getReactively
:myModule.controller('MyCtrl', ['$scope', '$reactive', function($scope, $reactive) {
$reactive(this).attach($scope);
this.relevantId = 10;
this.numberOfUsers = 3;
this.subscribe('users', () => {
return [ numberOfUsers, this.getReactively('relevantId') ];
});
this.relevantId = 50; // This will cause the subscribe arguments method to run again
this.numberOfUsers = 5; // This won't cause the subscribe arguments method to run again
}]);
myModule.controller('MyCtrl', ['$scope', '$reactive', function($scope, $reactive) {
$reactive(this).attach($scope);
this.numberOfParties = 3;
var subscriptionHandle = this.subscribe('parties', () => [this.numberOfParties], {
onReady: function () {
console.log("onReady And the Items actually Arrive", arguments);
subscriptionHandle.stop(); // Stopping the subscription, will cause onStop to fire
},
onStop: function (error) {
if (error) {
console.log('An error happened - ', error);
} else {
console.log('The subscription stopped');
}
}
});
console.log('subscription Handle',
subscriptionHandle); // Will include subscriptionId, ready() and stop()
}]);