On Sun, 09 Nov 2008 21:09:41 +0100, Michał Pasternak <[EMAIL PROTECTED]> wrote:
Jean-Paul Calderone pisze:
On Sun, 09 Nov 2008 13:28:26 +0100, Michał Pasternak <[EMAIL PROTECTED]>
wrote:
Hi,
I want to be able to add athena.LiveElement to an already rendered
LivePage. Quick Googling revealed this blog entry:
http://techblog.ironfroggy.com/2006/01/nevow-post-render-injection-
of.html
I'd like to know, if there are any other, simpler ways to do that - or,
maybe, is there a preferred method to do that in the API already?
See Nevow.Athena.Widget.addChildWidgetFromWidgetInfo.
This method will not add the markup automatically. Am I right?
I want to append incoming LiveFragments to the page.
Right now, I am doing something like this on the client:
// import Divmod.Runtime
What.Ever = Nevow.Athena.Widget.subclass('What.Ever');
What.Ever.methods =(
function foo(self) {
d = self.callRemote('getLiveFragment');
d.addCallback(
function liveFragmentReceived(lf) {
d2 = self.addChildWidgetFromWidgetInfo(lf);
d2.addCallback(
function added(res) {
d = Divmod.Runtime.theRuntime.parseXHTMLString(
lf.markup).documentElement;
self.nodeById('lastNode').appendChild(d);
});
});
You don't have to parse the markup. It's already parsed. The DOM
element which results is the `node´ attribute of the Widget instance
(which you get as `res´ - the result of the callback). You shouldn't
use any attributes of `lf´, since it is an opaque handle: there is no
API stability guarantee about it. The *only* thing you can do with it
is pass it to `addChildWidgetFromWidgetInfo´.
Jean-Paul
_______________________________________________
Twisted-web mailing list
[email protected]
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web