2017-09-29 8 views
0

Wie kann ich das aktuelle Dokument in einer Bokeh Server App ersetzen?So ersetzen Sie curdoc

Ich habe ein vorheriges Dokument als json_string gespeichert. Wenn ich

set_curdoc(Document.from_json_string(json_string)) 

tun scheint dies richtig curdoc zu ändern(), aber das neue Dokument nicht im Browser angezeigt wird.

Antwort

0

Ich habe einen Workaround gefunden, andere Orte schlagen vor, die Kinder eines vorhandenen Layouts zu aktualisieren, anstatt den gesamten curdoc() zu aktualisieren.

Ich tat das, aber ich musste ein bisschen erweitern, um dies aus einem Dokument in einem JSON-String gespeichert zu tun.

Ich hatte das document Attribut aller Modelle aus dem importierten Dokument curdoc() statt wechseln (sonst beschwert sich, dass die Modelle zu einem anderen Dokument gehören)

unter der Annahme, dass das Dokument ich importieren und das aktuelle Dokument beide haben nur eine Wurzel:

new_doc = Document.from_json_string(json_string) 

new_grid_models = collect_models(new_doc.roots[0]) 

for elem in new_grid_models: 
    try: 
     elem.document = curdoc() 
    except AttributeError: 
     elem._document = curdoc() 

new_children = new_doc.roots[0].children 
del new_doc 

grid.children = new_children 

, dass nach der python Rückrufe müssen die entsprechenden importierten Modellen wieder betroffen sein.

Ich habe ein Beispiel app hier oben: save_and_load app on Bitbucket