On Tuesday, July 3, 2012 4:27:37 PM UTC+2, Kees Bos wrote: > > 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}}]});''') > > > I have done it like this, and it is working fine:
class MySelect2DropDown(HTML): def __init__(self, values = None, width = 300, myid = None): if myid == None: myid = get_random_id() self.myid = myid html = '<select id="%s" style="width:%dpx">' % (myid, width) for value in values: html += '<option value="%s">%s</option>' % (value, values[value ]) html += '</select>' HTML.__init__ (self, html) def final_setup(self): myjs = 'parent.jQuery("#%s").select2();' % (self.myid) Logger("MySelect2DropDown", "Now calling JS: %s" % (myjs)) JS(""" eval(@{{myjs}}) """)