[Laszlo-user] Deleting imported libraries clarification
Cary Clark
caclark at cox.net
Mon Jul 14 06:12:38 PDT 2008
Robert Yeager suggested that I try:
if (global[classname] != null) delete global[classname];
if (lz[classname] != null) delete lz[classname];
While I don't get an error when these execute as I did when using the
destroy() method, I do get the same warnings/info message when I load()
the library again about the classes already being defined. Any other
suggestions?
Thanks,
Cary
Cary Clark wrote:
> I've put some optional code of my app into a dynamic library. When an
> instance of one of the classes is needed, I do a load on the library
> and create the instance after the onload() handler. I've been reading
> the Software Engineer's Guide, aka Developer's Guide, in 15.5
> "Deleting Imported Libraries". It's pretty short, so I'll include it
> here:
>
>
> 5. Deleting Imported Libraries
>
> To 'unload' an imported library, three things have to be done:
>
> 1.
>
> Destroy all the instances that were created by the library. This
> is done by calling |iii.destroy();| for each instance |iii|. Note
> that if you have created references to the instance outside of the
> library, you must delete those references.
>
> 2.
>
> Destroy all classes that were created by the snippet. This is done
> by calling |ccc.destroy();| for each class |ccc|. Note that if you
> have created references to the class outside of the library, you
> must delete those references.
>
> 3.
>
> Unload the library. This is done by calling |sss.unload()`| where
> |sss| is the name of the library (in the import tag).
>
> -----------------------------------------
> I have run destroy() on the instances of the classes from the imported
> library.
>
> I'm not being successful on step 2. I'm running OL 4.0.12 and tried
> lz['employeeMaintenanceWindow'].destroy() but get the dreaded "ERROR
> @vr.lzx#600: call to undefined method 'destroy'". I can write to the
> debug console the class name and reference:
>
> global class employeeMaintenanceWindow is «¡¿Class?!#12|
> lz.employeeMaintenanceWindow».
>
> I am able to do step 3 and run the unload() of the library using the
> name from the import. However, when I run code that needs a class
> from the library and I load() it again, I get these warnings:
>
> snippetLoaded loadmc= «LoadObj#2| undefined (loading)»
> «LzLibraryLoader#18| undefined (loading)»
> WARNING: Redefining tag employeeMaintenanceWindow from
> lz.employeeMaintenanceWindow to employeeMaintenanceWindow
> INFO: The global `employeeMaintenanceWindow` is already defined. To
> dynamically create a <employeeMaintenanceWindow> element, you will
> have to use `lz.employeeMaintenanceWindow`.
>
> What's the syntax that I should use to remove the global class
> definition? Or is it still a requirement to do that?...or am I just
> misunderstanding something...
>
> Thanks,
> Cary
>
>
More information about the Laszlo-user
mailing list