2017-02-21 3 views
0

Ich habe ein Template Helfer für Schulen mit reaktiven var schoolFindQueryMeteor Template Helper Reaktivität Inkonsistenz

Template.schoolCompareCenterList.helpers({ 
    schools(){ 
    console.log("schoolFindQuery is :" + schoolFindQuery); 
     let school = Schools.find(JSON.parse(schoolFindQuery), {limit : 20}); 
     console.log("school count is : " + school.count()); 

     return school; 
} 
}) 

und schoolFindQuery reaktive Variable ändert sich mit Tastenklicks, mit Mausklicks Abo erneuert und ui verändert sich entsprechend zeigt. Seltsame Sache ist, wenn Subskriptionsrückgabedaten kein Problem sind, aber wenn Subskription irgendwelche Daten zurückgibt, danach wird Hilfscode nicht mit Subskriptionsänderung wiederholt (sogar ich kann Subskriptionen mit Meteorspielwaren sehen) und ui zeigt keine Daten an. Mein Abonnement-Code ist unten,

this.autorun(function() { 


if(subscription) 
    subscription.stop() 


//This reactive variables set by buttons and by the ghelp of reactivty subscription rerun 
    query = "{" 
    if(_sTy__.get() != 0 && _sTy__ != null) 
     query += "\"schoolType.schoolT\" : \"" + _sTy__.get()+ "\"," 
    if (_sTy2__.get() != 0 && _sTy2__ != null) 
     query += "\"schoolType.schoolTT\" : \""+ _sTy2__.get() +"\"," 
    if(regexSchoolName.get() != 0 && regexSchoolName.get() != null) 
     query += "\"schoolName\" : {\"$regex\": \".*" + regexSchoolName.get() + ".*\", \"$options\": \"i\"}," 

    query += "\"haveSchoolDetailInfo\" : true}" 

    subscription = Meteor.subscribe("schoolCompare.infinite.publish", query, 20, 0); 
    schoolFindQuery = query;}) 

Vielen Dank im Voraus.

+0

Sind Sie sicher, schoolFindQuery reagiert? Es sieht aus wie eine normale Var; es sollte anders eingestellt werden. Kannst du zeigen, wie es definiert ist? – zim

+0

Ich definierte es wie var schoolFindQuery = new ReactiveVar(); es verhält sich reaktiv bis zur leeren Subskription – ofcelik

+0

Sie ändern eine reaktive Variable nicht, indem Sie ihr zuweisen, sondern indem Sie die Methoden 'get()' und 'set (newVal)' verwenden. – MasterAM

Antwort

Verwandte Themen