2016-04-18 5 views
0

Ich verwende die folgenden:Meteor - Wie benutzt man Blaze.renderWithData in einer Bootbox und bleibt das Ergebnis reaktiv?

let box = bootbox.dialog({title:'',message:''}); 
box.find('.bootbox-body').remove(); 
Blaze.renderWithData(template,doc,box.find(".modal-body")[0]); 

Es macht richtig, aber es ist nicht reaktiv.

Ich vermute, dass ich ein Problem habe, das direkt in das Dokument übergibt, und habe die _id des Dokuments verfügbar.

Was sollte ich an renderWithData übergeben, damit das Ergebnis reaktiv ist?

Antwort

0

ich meine Lösung gefunden.

Statt

let doc = MyCollection.findOne({_id}); 
Blaze.renderWithData(template,doc,box.find(".modal-body")[0]); 

Oder

Blaze.renderWithData(template,MyCollection.findOne({_id}),box.find(".modal-body")[0]); 

Ich wechselte zu

Blaze.renderWithData(template,function(){ 
    MyCollection.findOne({_id}) 
},box.find(".modal-body")[0]); 

Dies macht jetzt den Dialog reaktiv.

0

Wenn Sie im Code vor der Bootbox doc = MyCollection.findOne(...) haben, dann wird doc reaktiv sein. Ansonsten können Sie in der _id passieren und die .find() in Ihrer Vorlage Helfer durchführen (die, die Sie in Blaze.render() vorbei sind.

+0

1) tatsächlich, doc wurde mit doc = MyCollection.findOne ({_ id}) geladen, aber das Ergebnis in Blaze.renderWithData übergeben, und es ist nicht mehr reaktiv. – dpatte

+0

2) Ich bin nicht sicher, wie Sie die _id in Blaze.renderWithData übergeben können. Es erwartet Daten, nicht die _id. – dpatte

+1

Hängt davon ab, wie die Vorlage eingerichtet ist und was ihre Helfer sind. Es erwartet einen _Datenkontext_, der von einem Cursor zu einem Array von Objekten über ein einzelnes Objekt bis zu einem skalaren Wert reichen kann. –

Verwandte Themen