2016-06-18 1 views
0

Ich habe Hörer auf mongodb Sammlung mit Ereignisse observerChangesAdded Rückruf in Sammlung # observerChanges hat Template.instance() = null

ich es den neuen Eintrag zu ReactiveVar, um schieben will dynamisch in Vorlage verwendet werden.

Wenn ich die Daten durch Übermitteln an das Formular einfügen, funktioniert es gut ... Template.instance() ist eine Instanz von Blaza.Template.

Wenn jedoch i Datensatz in mongodb einfügen manuell, Template.instance() null geworden

Könnten Sie bitte erklären, warum kann ich nicht Vorlage zugreifen unter diesen verschiedenen Ereignis?

Vielen Dank.

Antwort

0

Es gibt nur keinen Vorlagenkontext, wenn der Beobachter basierend auf einer db-Änderung ausgelöst wird - Ihr Beobachter wird außerhalb einer Vorlage definiert. Versuchen Sie, Ihre Beobachter in Ihren .onCreated Code bewegen, so dass Template.instance definiert ist

Template.body.onCreated(function bodyOnCreated() { 
    this.curTasks = new ReactiveVar([]); 
    cursor.observeChanges({ 
     added: function(id, doc) { 
     if (usersLoaded) { 
      task = Template.instance().curTasks.get(); 
      task.push({id: id, text:id}); 
      Template.instance().curTasks.set(task); 
     } 
     } 
    }); 
}); 
+0

Ich habe auch versucht, dass aber es funktioniert immer noch nicht. gleicher Fehler – chaintng

+0

Haben Sie tatsächlich eine HTML-Vorlage definiert oder verwenden Sie nur Body? –

+0

Ja, ich habe 'body.html'. Das Eingabefeld wird dort bleiben, und dieses Eingabefeld funktioniert. so seltsam. – chaintng