<attribute>
Sets an attribute of the object that contains it.

The <attribute> tag has two uses:

  1. In a class definiiton, the <attribute> tag defines an attribute that can be set in instances of the class.

    <canvas height="30">
      <class name="mybutton" extends="button">
        <attribute name="myattr" type="string" value="after"/>
      </class>
      <mybutton text="before" myattr="after" onclick="setAttribute('text', this.myattr)"/>
    </canvas>
    edit
  2. In an instance, the <attribute> tag attaches an attribute to the instance. The attribute can be accessed from script.

    <canvas height="30">
    
      <class name="mybutton" extends="button">
          <attribute name="myattr" type="string" value="after"/>
      </class>
      <mybutton text="before" onclick="setAttribute('text', this.myattr)">
        <attribute name="myattr" value="perhaps later"/>
      </mybutton>
    </canvas>
    edit

See the Developer's Guide for a complete discussion.

Also see the documentation for <class>. The Classes tutorial describes how to use attributes to define a class.

Attributes

Name Type (tag) Type (js) Default Category
allocation "instance" | "class" String "instance" initialize-only
  One of:
class
The attribute will be an attribute of the class; to refer to it, you say lz.classname.attributename.
instance
Each instance will have an attribute with the specified properties (name, type, value, etc.).

You can set allocation to class to get static attributes. Static properties are attached to the class itself, for example lz.classname.

<attribute name="allowed" value="false" type="boolean" allocation="class" />
name   String   initialize-only
  The name of the attribute.
required   Boolean "false" initialize-only
  True if this is a required attribute.
type "boolean" | "color" | "expression" | "number" | "size" | "string" | "text" | "html" String "expression" initialize-only
  The type of the attribute. This determines how the value is parsed. Attributes of type string are automatically quoted if when="immediate", for any other value of when, a literal string would have to be quoted to be used as a value.
value   Object   read/write
  The initial value of the attribute. The type of this value is specified by the value of the type attribute; if that attribute is not present, it's the type of this attribute in this element's tag. The attribute is given this value when the element is created.
when "immediately" | "once" | "always" String "immediately" initialize-only
  When the initial value expression is to be evaluated. One of:
immediately
evaluate when the enclosing element is defined (must be a constant)
once
evaluate when the enclosing element is initialized
always
update whenever the value of the expression changes
The default is when="immediately". The setting for when can be overridden when assigning a value to an attribute by using the syntax =${}. The default for when value is always, for example: <view title="$once{computeTitle()}" /> sets the title of the view to a computed value and <view title="${parent.subtitle}" \> will cause the title of the view to track parent.subtitle.