您可以採用的方法是在模板的created
函數中訂閱,然後在呈現模板時首先檢查每個訂閱的ready()
,如果它們不全都是真的,則渲染加載顯示。
<template name="templateWithSubscription">
{{#if ready}}
<!-- actual content -->
{{else}}
loading...
{{/if}}
</template>
Template.templateWithSubscription.created = function() {
this.subscriptions = [
Meteor.subscribe(/* ... */),
Meteor.subscribe(/* ... */),
/* ... */
];
};
Template.templateWithSubscription.destroyed = function() {
_.each(this.subscriptions, function (sub) {
sub.stop();
});
};
Template.templateWithSubscription.helpers({
ready: function() {
return _.all(Template.instance().subscriptions, function (sub) {
return sub.ready();
});
}
});
相似的方法也可以用於其它數據源(例如方法)。
我該如何做多個訂閱並阻止它們銷燬? – user2858924 2014-09-02 11:18:28
我編輯它以顯示多個訂閱。 – user3374348 2014-09-02 11:37:08
感謝您的快速響應 – user2858924 2014-09-02 17:11:26