On Fri, 28 May 2004 14:09:59 +0200, Bernardo Arlandis Mañó [EMAIL PROTECTED]
said:
[SNIPPED]
You've pointed something important, if the js code has to be
regenerated there's no improvement other than having separate
files. The js code should be static, but then I'd need to pass
dinamically created collections of objects to the javascript
functions to do their work. What I'd like to know is easy ways to do
this or alternative ones with the same effect. For example, I need
to pass a list of java objects generated by velocity to the
javascript functions so that the js functions can work with them
without having to use velocity to replicate the js code.
We've done this. We put our javascript code into .js files as
suggested. This is static js code, functions really. Then in our
velocity templates we use the js functions. We really try to keep
these javascript functions to ui issues ( speed ) and very little
logic in them ( for example disabling or enabling a button on the fly
).
So in one instance we had to take a list of objects we get from our
pull tool and slam that into a js array for our javascript functions
to use. In our velocity template we did just that:
--- CommonJS.vm---
script language=JavaScript
src=$content.getURI(javascript/selectbox.js)/script
script language=JavaScript
src=$content.getURI(javascript/format-utility.js)/script
#set($jsfields = $layoutholder.Layout.Fields)
#if ($jsfields)
script language=JavaScript
var noFields = $jsfields.size();
var fields = new Array(noFields);
#set($offset = 1)
#foreach($field in $jsfields)
#set ($i = $velocityCount - 1)
#set ($end = $offset + $field.FieldLength - 1 )
fields[$i] = new Array(6);
fields[$i][0] = $formatutil.escapeJavaScript($!field.CustomerField);
fields[$i][1] = $!field.QdsField;
fields[$i][2] = $!field.FieldLength;
fields[$i][3] = $offset;
fields[$i][4] = $end;
fields[$i][5] = $!field.FieldType;
fields[$i][6] = $!field.FieldFormat;
#set ($offset = $end+1);
#end
/script
#end
Then we use our javascript function on our html elements, passing the array as needed.
select name=fmt size=10 onChange=update(this, fields)
onkeypress=keyUpdate(this,event)
Hope this helps.
--
=
Jeffrey D. Brekke [EMAIL PROTECTED]
Wisconsin, USA [EMAIL PROTECTED]
[EMAIL PROTECTED]
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]