2015-04-17 16 views
13

Meteor ostatnio wprowadził możliwość subskrypcji szablonów. Możesz teraz zadzwonić pod numer this.subscribe z poziomu Temeplate.xyz.onCreated, a helper {{#if Template.subscriptionsReady}} będzie prawdziwy tylko wtedy, gdy subskrypcje zostaną przygotowane z serwera.w jaki sposób używasz menedżerów subskrypcji z subskrypcjami szablonów meteorów?

Niestety to nie wydaje się być oczywiście zgodny z subs-manager lub subs-Cache

Jak woudl użyć Subs-cache w miejscu z this.subscribe tak, że identyfikatory subskrypcyjnych dokonane przez kierownika subsciptions uczynić go _subscriptionHandles i _allSubsReady częścią tego? Subskrybuj? Lub w inny sposób zapytany, w jaki sposób uzyskać {{#if Template.subscriptionsReady}} i funkcję Template.instance(). SubscriptionsReady() zależą od subskrypcji szablonu wykonane z subsache Cache.

przykład kodu, który nie działa: „połączenia”

# in some top level file 
share.subsCache = new SubsCache( 
    expireAter: 5 
    cacheLimit: 10 
) 

#in a template file 
Template.entryRevisionInfo.onCreated -> 
    share.subsCache.subscribe('somePub') 
+0

Znalazłeś rozwiązanie tego? – chasemb

+0

Nie, przepraszam, nie, dodam nagrodę, aby sprawdzić, czy to coś nie pasuje. – funkyeah

Odpowiedz

1

Sacha Greif napisała rozwiązanie w aplikacji Telescope. Próbowałem wyodrębnić części, które są istotne dla podstawowej realizacji poniżej. O ile dobrze rozumiem, że opiera się na wyraźnie ustawienie gotowy status szablonu ... ustawienie go reaktywnie gdy subskrypcja jest gotowy:

subsManager = new SubsManager(); 
Template.templatename.onCreated(function() { 
    var instance = this; 
    instance.ready = new ReactiveVar(false); 
    subscription = subsManager.subscribe('yourCollection') 
    instance.autorun(function() { 
    if (subscription.ready()) { //reactive 
     instance.ready.set(true); 
    } 
    } 
} 
+0

Możesz również znaleźć na https://www.discovermeteor.com/blog/template-level-subscriptions/ – Sacha

Powiązane problemy