On Tue, 2012-07-03 at 13:43 +0200, Peter Bittner wrote: > Daniel, > > I came across the same problem when working on the console logging > functionality. The trick is to squeeze everything into a variable and > use the @-notation to access it from Pyjs (e.g. JS(""" > eval(@{{myvar}}) """) or so).
Indeed. > > Take a look at the __debug/__info/... functions in > https://github.com/pyjs/pyjs/blob/master/library/pyjamas/logging/handlers.py > > I don't know, actually, what the @-notation does. Maybe someone more > experienced here can explain? (Kees? Anthony?) The @{{foo}} transports python variables to the javascript scope. So, the final_setup would probably be: def final_setup(self, selected = '"red", "green", "blue"'): myid = str(self.myid) JS('''parent.jQuery(@{{myid}}).select2({tags:[@{{selected}}]});''') > > Good luck Daniel, > Peter > > > 2012/7/3 Daniel Gonzalez <gonva...@gmail.com>: > > Hi, > > > > I am trying to define the following component, which uses native javascript: > > > > class MyTaggingComponent(HTML): > > > > > > def __init__(self, myid, values, width = 300): > > self.myid = myid > > values = ','.join(values) > > html = '<p><input type="hidden" id="%s" style="width:%dpx" > > value="%s"/></p>' % (myid, width, values) > > HTML.__init__ (self, html) > > > > > > def final_setup(self, selected = '"red", "green", "blue"'): > > my_javascript = 'parent.jQuery("#%s").select2({tags:[%s]});' % > > (self.myid, self.selected) > > JS(my_javascript) > > > > I get a compile error: "JS function only supports constant strings". > > > > This is a big problem, since, in order to reuse this component, I need to > > have variable content in the inline javascript. I have taken a look at the > > implementation of JS in pyjs/pyjs/src/pyjs/translator_proto.py, but it is > > not clear for me whether bypassing this restriction is possible, or how > > could it be done. > > > > Could you suggest a workaround? > > > > Thanks, > > Daniel