<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> and the general description of LZX attributes. The Classes tutorial describes how to use attributes to define a class.

Attributes

Name Type (tag) Type (js) Default Category
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.