Divmod : Nevow
Athena
Adding LiveElements? to a LivePage on fly tutorial
Javascript function Nevow.Athena.Widget.addChildWidgetFromWidgetInfo can be used to do that.
All you need on the server is to return a LiveElement? instance:
from nevow import athena class WhateverElement(athena.LiveElement): @athena.expose def getNewLiveElement(self): return SomeOtherLiveElement()
Note: you should also call setFragmentParent on the new LiveElement? (see here).
On the client, you need some code & a free XML node to append the new element to:
// import Nevow.Athena // import Divmod.Runtime What.Ever = Nevow.Athena.Widget.subclass('What.Ever'); What.Ever.methods = ( function foo(self) { d = self.callRemote('getNewLiveElement'); d.addCallback( function liveElementReceived(le) { d2 = self.addChildWidgetFromWidgetInfo(le); d2.addCallback( function childAdded(widget) { /* widget is a Nevow.Athena.Widget instance and it * represents a newly created widget for the liveelement * got from the server */ /* find a node to attach the widget to: */ self.nodeById('lastNode').appendChild(widget.node); /* you could also use, for example: * * var node = self.nodeById('lastNode'); * node.replaceChild(widget.node, node.firstChild); */ }); });
