[Laszlo-dev] The concept of node.classname in 4.0.18

Raju Bitter rajubitter at me.com
Sun Nov 15 08:41:04 PST 2009


Understood, the classes have a tagname field. But the instances don't  
have one, which doesn't give the ability to search the subviews/ 
subnodes of a view for instances of a specific class. At least I don't  
know how to do that.

Take this code:
<canvas debug="true">
     <view name="myView" width="100" height="100" bgcolor="red">
     </view>
</canvas>

How could I search the canvas for a list of subviews based on the  
lz.view class? canvas.searchSubnodes("tagname", "view") doesn't work,  
since canvas.myView.tagname is undefined. Of course I could write my  
own method to do that, but I thought it's handy to be able to search  
the subnodes for specific instances of a class.

On Nov 15, 2009, at 3:58 PM, P T Withington wrote:

> All 4.0 classes have a `tagname` field.  Anywhere you used  
> `classname` in 3.x you should use `constructor.tagname` in 4.x.  We  
> did this because LFC class names are different from the tag they  
> represent and we wanted a uniform API for both LZX and core  
> classes.  Using `constructor.tagname` will be forward compatible.
>
> On 2009-11-15, at 09:38, Raju Bitter wrote:
>
>> Thanks, Tucker. But that would only work for 4.1, I guess. 4.0.x  
>> didn't use the lz. namespace. I found a workaround using a bit more  
>> of initialization code.
>>
>> - Raju
>>
>> On Nov 15, 2009, at 2:49 PM, P T Withington wrote:
>>
>>> On 2009-11-15, at 06:19, Raju Bitter wrote:
>>>
>>>> In an old app OL 3.4 app I used the following code:
>>>>
>>>> var tabs = parent.searchSubnodes('classname', 'CustomTabs');
>>>>
>>>> But in 4.0.18 (Webtop) that doesn't work any more. What happened  
>>>> to the concept of being able to access the name of the class  
>>>> through nodeObject.classname? That worked in 3.3, and in 4.0.18  
>>>> (Webtop) it returns "Object", which is not very helpful. By  
>>>> looking at the source code for LzNode I saw that it's possible to  
>>>> access the real classname through object.constructor.classname.
>>>>
>>>> Is that a bug, or a feature?
>>>
>>> You want to update your code to use 'tagname' instead of  
>>> 'classname'.  This was part of the attempt to make the LFC and  
>>> user classes uniformly accessible.  For all tags `t` in LZX:
>>>
>>> lz[t].tagname === t
>>>
>>>
>>
>



More information about the Laszlo-dev mailing list