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.
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
Ich definierte es wie var schoolFindQuery = new ReactiveVar(); es verhält sich reaktiv bis zur leeren Subskription – ofcelik
Sie ändern eine reaktive Variable nicht, indem Sie ihr zuweisen, sondern indem Sie die Methoden 'get()' und 'set (newVal)' verwenden. – MasterAM