src/cm/media/js/lib/yui/yui_3.10.3/docs/attribute/attribute-event.html
author gibus
Tue, 16 Jul 2013 14:29:46 +0200
changeset 525 89ef5ed3c48b
permissions -rw-r--r--
Upgrades to yui 3.10.3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     1
<!DOCTYPE html>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     2
<html lang="en">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     3
<head>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     4
    <meta charset="utf-8">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     5
    <title>Example: Attribute Change Events</title>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     6
    <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=PT+Sans:400,700,400italic,700italic">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     7
    <link rel="stylesheet" href="../../build/cssgrids/cssgrids-min.css">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     8
    <link rel="stylesheet" href="../assets/css/main.css">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     9
    <link rel="stylesheet" href="../assets/vendor/prettify/prettify-min.css">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    10
    <link rel="shortcut icon" type="image/png" href="../assets/favicon.png">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    11
    <script src="../../build/yui/yui-min.js"></script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
</head>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
<body>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
<!--
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
<a href="https://github.com/yui/yui3"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub"></a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
-->
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
<div id="doc">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
    <div id="hd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
        <h1><img src="http://yuilibrary.com/img/yui-logo.png"></h1>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
            <h1>Example: Attribute Change Events</h1>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
    <div class="yui3-g">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
        <div class="yui3-u-3-4">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
            <div id="main">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
                <div class="content"><style type="text/css" scoped>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
    #example-out .event {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
        padding:2px 2px 2px 5px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
    #example-out .event-props {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
        font-family:courier;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
        margin-top:2px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
    #example-out .event-title {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
        font-weight:bold;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
        font-family:arial;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
        color:#8dd5e7;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
        margin-top:5px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
        margin-bottom:3px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
    #example-out {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
        margin:5px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
        border:1px solid #000;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
        color:#ffffff;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
        background-color:#004c6d;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
        overflow:auto;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
        height:20em;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
    .attrs {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
        border:1px solid #000;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
        background-color:#cdcdcd;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
        margin:5px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
    .attrs .header {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
        font-weight:bold;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
        background-color:#aaa;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
        padding:5px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
    .attrs .body {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
        padding:10px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
    .attrs .footer {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
        padding:5px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
    .attrs label {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
        display:block;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
        float:left;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
        clear:left;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
        font-weight:bold;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
        width:8em;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
    .attrs #preventFoobar.hidden {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
        display:none;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
    .attrs #preventFoobar {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
        margin-left:5px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
        display:inline;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
        float:none;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
        clear:none;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
</style>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
<div class="intro">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
    <p>Attribute change events are one of the key benefits of using attributes to maintain state for your objects, instead of regular object properties. This example shows how you can listen for attribute change events and work with the event payload they receive.</p> 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
<div class="example">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
    <form id="changeValue" class="attrs" action="#">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
    <div class="header">Enter a new value and click the "Change Value" button:</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
    <div class="body">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
        <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
            <label for="attrSel">Attribute</label>: 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
            <select id="attrSel">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
                <option value="foo">foo</option>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
                <option value="bar">bar</option>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
                <option value="foobar">foobar</option>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
            </select>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
            <label id="preventFoobar" class="hidden"><input type="checkbox" checked="true"> Prevent change</label>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
        </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
        <p><label for="currentVal">Current Value</label>: <span id="currentVal"></span></p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
        <p><label for="newVal">New Value</label>: <input type="text" id="newVal" /></p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
    <div class="footer">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
        <button type="submit">Change Value</button>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
</form>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
<div id="example-out"></div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
<script type="text/javascript">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
// Get a new YUI instance 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
YUI().use("node", "attribute", "escape", function(Y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
    // Setup a custom class with attribute support
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
    function MyClass(cfg) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
        // Setup attribute configuration
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
        var attrs = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
            "foo" : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
                value:5
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
     
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
            "bar" : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
                value:"Hello World!"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
            "foobar" : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
                value:true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
        this.addAttrs(attrs, cfg);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
    Y.augment(MyClass, Y.Attribute);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
    var o1 = new MyClass();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
    function displayEvent(e, title) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
        var str = '<div class="event"><div class="event-title">' + title + '</div>';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
        if (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
            str += 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
            '<ul class="event-props"><li>e.attrName: ' 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
            + e.attrName 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
            + '</li><li>e.prevVal: '
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
            + Y.Escape.html(e.prevVal + "")
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
            + '</li><li>e.newVal: '
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
            + Y.Escape.html(e.newVal + "")
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
            + '</li></ul></div>';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
        str += '</div>';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
        Y.one("#example-out").prepend(str);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
    // Start Example Form Handling
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
    var attrSel = Y.one("#attrSel");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
    var newValTxt = Y.one("#newVal");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
    var currentValSpan = Y.one("#currentVal");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
    var preventFoobarChk = Y.one("#preventFoobar input[type=checkbox]");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
    var preventFoobarLbl = Y.one("#preventFoobar");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
    var attrOpts = attrSel.get("options");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
    function updateVal(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
        e.preventDefault();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
        var selIndex = attrSel.get("selectedIndex");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
        var attr = attrOpts.item(selIndex).get("value");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
        o1.set(attr, newValTxt.get("value"));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
    Y.on("submit", updateVal, "#changeValue");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
    function populateCurrentValue() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
        var selIndex = attrSel.get("selectedIndex");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
        var attr = attrOpts.item(selIndex).get("value");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
        currentValSpan.set("innerHTML", Y.Escape.html(o1.get(attr) + ""));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
        newValTxt.set("value", "");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
        if (attr === "foobar") {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
            preventFoobarLbl.removeClass("hidden");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
            preventFoobarLbl.addClass("hidden");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
    populateCurrentValue();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
    Y.on("change", populateCurrentValue, attrSel);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
    // End Example Form Handling
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
    // Attribute Change Event Listners
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
    o1.after("fooChange", function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
        displayEvent(e, "After fooChange");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
        currentValSpan.set("innerHTML", Y.Escape.html(e.newVal+""));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
    o1.after("barChange", function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
        displayEvent(e, "After barChange");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
        currentValSpan.set("innerHTML", Y.Escape.html(e.newVal+""));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
    o1.on("foobarChange", function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
        if (preventFoobarChk.get("checked")) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
            // Calling preventDefault, in an "on" listener
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
            // will prevent the attribute change from occuring
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
            // and the after listener being called.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
            e.preventDefault();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
            displayEvent(null, "On foobarChange (prevented)");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
    o1.after("foobarChange", function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
        // This foobar after listener will not get called, 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
        // if we end up preventing default in the "on" 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
        // listener above.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
        displayEvent(e, "After foobarChange");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
        currentValSpan.set("innerHTML", Y.Escape.html(e.newVal+""));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
</script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
<h2>Listening For Attribute Change Events</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
<p>In this example, we'll look at how you can setup listeners for attribute change events, and work with the event payload which the listeners receive.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
<h3>Setting Up A Custom Class With Attribute</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
<p>We start by setting up the same custom class we created for the <a href="attribute-basic.html">basic example</a> with 3 attributes <code>foo</code>, <code>bar</code> and <code>foobar</code>, using the code below:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
<pre class="code prettyprint">YUI().use(&quot;attribute&quot;, &quot;node&quot;, function(Y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
    &#x2F;&#x2F; Setup a custom class with attribute support
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
    function MyClass(cfg) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
        &#x2F;&#x2F; Setup attribute configuration
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
        var attrs = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
            &quot;foo&quot; : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
                value:5
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
     
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
            &quot;bar&quot; : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
                value:&quot;Hello World!&quot;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
            &quot;foobar&quot; : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
                value:true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
        this.addAttrs(attrs, cfg);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
    Y.augment(MyClass, Y.Attribute);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
<h3>Registering Event Listeners</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
<p>Once we have an instance of the custom class, we can use the <code>on</code> and <code>after</code> methods provided by Attribute, to listen for changes in the value of each of the attributes:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
<pre class="code prettyprint">var o1 = new MyClass();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
...
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
&#x2F;&#x2F; Event Listners
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
o1.after(&quot;fooChange&quot;, function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
    displayEvent(e, &quot;After fooChange&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
    currentValSpan.set(&quot;innerHTML&quot;, Y.Escape.html(e.newVal+&quot;&quot;));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
o1.after(&quot;barChange&quot;, function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
    displayEvent(e, &quot;After barChange&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
    currentValSpan.set(&quot;innerHTML&quot;, Y.Escape.html(e.newVal+&quot;&quot;));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
o1.on(&quot;foobarChange&quot;, function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
    if (preventFoobarChk.get(&quot;checked&quot;)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
        &#x2F;&#x2F; Calling preventDefault, in an &quot;on&quot; listener
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
        &#x2F;&#x2F; will prevent the attribute change from occuring
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
        &#x2F;&#x2F; and the after listener being called.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
        e.preventDefault();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
        displayEvent(null, &quot;On foobarChange (prevented)&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
o1.after(&quot;foobarChange&quot;, function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
    &#x2F;&#x2F; This foobar after listener will not get called, 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
    &#x2F;&#x2F; if we end up preventing default in the &quot;on&quot; 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
    &#x2F;&#x2F; listener above.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
    displayEvent(e, &quot;After foobarChange&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
    currentValSpan.set(&quot;innerHTML&quot;, Y.Escape.html(e.newVal+&quot;&quot;));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
<p>As seen in the above code, the event type for attribute change events is created by concatenating the attribute name with <code>&quot;Change&quot;</code> (e.g. <code>&quot;fooChange&quot;</code>), and this event type is used for both the <code>on</code> and <code>after</code> subscription methods. Whenever an attribute value is changed through Attribute's <code>set</code> method, both "on" and "after" subscribers are notified.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
<h3>On vs. After</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
<p><strong>on :</strong> Subscribers to the "on" moment, will be notified <em>before</em> any actual state change has occurred. This provides the opportunity to prevent the state change from occurring, using the <code>preventDefault</code> method of the event facade object passed to the subscriber. If you use <code>get</code> to retrieve the value of the attribute in an "on" subscriber, you will receive the current, unchanged value. However the event facade provides access to the value which the attribute is being set to, through it's <code>newVal</code> property.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
<p><strong>after :</strong> Subscribers to the "after" moment, will be notified <em>after</em> the attribute's state has been updated. This provides the opportunity to update state in other parts of your application, in response to a change in the attribute's state.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
<p>Based on the definition above, <code>after</code> listeners are not invoked if state change is prevented, for example, due to one of the <code>on</code> listeners calling <code>preventDefault</code> on the event object, as is done in the <code>on</code> listener for the <code>foobar</code> attribute:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
<pre class="code prettyprint">o1.on(&quot;foobarChange&quot;, function(event) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
    &#x2F;&#x2F; Calling preventDefault, in an &quot;on&quot; listener
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
    &#x2F;&#x2F; will prevent the attribute change from occurring
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
    &#x2F;&#x2F; and prevent the after listeners from being called
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
    displayEvent(event, &quot;on foobarChange (change prevented)&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
    event.preventDefault();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
<p>For primitive values (non-Object values), the <code>after</code> listeners will also not be invoked if there is no change in the actual value of the attribute. That is, if the new value of the attribute is the same as the current value (based on the identity operator, <code>===</code>), the <code>after</code> listeners will not be notified because there is no change in state. You can see this, by setting an attribute to the same value twice in a row.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
<h3>Event Facade</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
<p>The event object (an instance of <a href="http://yuilibrary.com/yui/docs/api/EventFacade.html">EventFacade</a>) passed to attribute change event subscribers, has the following interesting properties and methods related to attribute management:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
<dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
    <dt>newVal</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
    <dd>The value which the attribute will be set to (in the case of "on" subscribers), or has been set to (in the case of "after" subscribers</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
    <dt>prevVal</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
    <dd>The value which the attribute is currently set to (in the case of "on" subscribers), or was previously set to (in the case of "after" subscribers</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   361
    <dt>attrName</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
    <dd>The name of the attribute which is being set</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   363
    <dt>subAttrName</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   364
    <dd>Attribute also allows you to set nested properties of attributes which have values which are objects through the 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   365
    <code>set</code> method (e.g. <code>o1.set(&quot;x.y.z&quot;)</code>). This property will contain the path to the property which was changed.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   366
    <dt>preventDefault()<dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   367
    <dd>This method can be called in an "on" subscriber to prevent the attribute's value from being updated (the default behavior). Calling this method in an "after" listener has no impact, since the default behavior has already been invoked.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   368
    <dt>stopImmediatePropagation()</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   369
    <dd>This method can be called in "on" or "after" subscribers, and will prevent the rest of the subscriber stack from
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   370
    being invoked, but will not prevent the attribute's value from being updated.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   371
</dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   372
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   373
<p>The <a href="attribute-event-speeddate.html">"Attribute Event Based Speed Dating" example</a> provides a look at how you can leverage attribute change events in your applications, to decouple logic both within your class, and when interacting with other objects.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   374
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   375
<h2>Complete Example Source</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   376
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   377
<pre class="code prettyprint">&lt;form id=&quot;changeValue&quot; class=&quot;attrs&quot; action=&quot;#&quot;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   378
    &lt;div class=&quot;header&quot;&gt;Enter a new value and click the &quot;Change Value&quot; button:&lt;&#x2F;div&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   379
    &lt;div class=&quot;body&quot;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   380
        &lt;p&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   381
            &lt;label for=&quot;attrSel&quot;&gt;Attribute&lt;&#x2F;label&gt;: 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   382
            &lt;select id=&quot;attrSel&quot;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   383
                &lt;option value=&quot;foo&quot;&gt;foo&lt;&#x2F;option&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   384
                &lt;option value=&quot;bar&quot;&gt;bar&lt;&#x2F;option&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   385
                &lt;option value=&quot;foobar&quot;&gt;foobar&lt;&#x2F;option&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   386
            &lt;&#x2F;select&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   387
            &lt;label id=&quot;preventFoobar&quot; class=&quot;hidden&quot;&gt;&lt;input type=&quot;checkbox&quot; checked=&quot;true&quot;&gt; Prevent change&lt;&#x2F;label&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   388
        &lt;&#x2F;p&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   389
        &lt;p&gt;&lt;label for=&quot;currentVal&quot;&gt;Current Value&lt;&#x2F;label&gt;: &lt;span id=&quot;currentVal&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   390
        &lt;p&gt;&lt;label for=&quot;newVal&quot;&gt;New Value&lt;&#x2F;label&gt;: &lt;input type=&quot;text&quot; id=&quot;newVal&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   391
    &lt;&#x2F;div&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   392
    &lt;div class=&quot;footer&quot;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   393
        &lt;button type=&quot;submit&quot;&gt;Change Value&lt;&#x2F;button&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   394
    &lt;&#x2F;div&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   395
&lt;&#x2F;form&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   396
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   397
&lt;div id=&quot;example-out&quot;&gt;&lt;&#x2F;div&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   398
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   399
&lt;script type=&quot;text&#x2F;javascript&quot;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   400
&#x2F;&#x2F; Get a new YUI instance 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   401
YUI().use(&quot;node&quot;, &quot;attribute&quot;, &quot;escape&quot;, function(Y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   402
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   403
    &#x2F;&#x2F; Setup a custom class with attribute support
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   404
    function MyClass(cfg) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   405
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   406
        &#x2F;&#x2F; Setup attribute configuration
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   407
        var attrs = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   408
            &quot;foo&quot; : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   409
                value:5
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   410
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   411
     
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   412
            &quot;bar&quot; : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   413
                value:&quot;Hello World!&quot;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   414
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   415
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   416
            &quot;foobar&quot; : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   417
                value:true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   418
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   419
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   420
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   421
        this.addAttrs(attrs, cfg);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   422
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   423
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   424
    Y.augment(MyClass, Y.Attribute);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   425
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   426
    var o1 = new MyClass();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   427
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   428
    function displayEvent(e, title) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   429
        var str = &#x27;&lt;div class=&quot;event&quot;&gt;&lt;div class=&quot;event-title&quot;&gt;&#x27; + title + &#x27;&lt;&#x2F;div&gt;&#x27;;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   430
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   431
        if (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   432
            str += 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   433
            &#x27;&lt;ul class=&quot;event-props&quot;&gt;&lt;li&gt;e.attrName: &#x27; 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   434
            + e.attrName 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   435
            + &#x27;&lt;&#x2F;li&gt;&lt;li&gt;e.prevVal: &#x27;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   436
            + Y.Escape.html(e.prevVal + &quot;&quot;)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   437
            + &#x27;&lt;&#x2F;li&gt;&lt;li&gt;e.newVal: &#x27;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   438
            + Y.Escape.html(e.newVal + &quot;&quot;)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   439
            + &#x27;&lt;&#x2F;li&gt;&lt;&#x2F;ul&gt;&lt;&#x2F;div&gt;&#x27;;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   440
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   441
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   442
        str += &#x27;&lt;&#x2F;div&gt;&#x27;;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   443
 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   444
        Y.one(&quot;#example-out&quot;).prepend(str);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   445
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   446
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   447
    &#x2F;&#x2F; Start Example Form Handling
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   448
    var attrSel = Y.one(&quot;#attrSel&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   449
    var newValTxt = Y.one(&quot;#newVal&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   450
    var currentValSpan = Y.one(&quot;#currentVal&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   451
    var preventFoobarChk = Y.one(&quot;#preventFoobar input[type=checkbox]&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   452
    var preventFoobarLbl = Y.one(&quot;#preventFoobar&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   453
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   454
    var attrOpts = attrSel.get(&quot;options&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   455
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   456
    function updateVal(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   457
        e.preventDefault();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   458
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   459
        var selIndex = attrSel.get(&quot;selectedIndex&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   460
        var attr = attrOpts.item(selIndex).get(&quot;value&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   461
        o1.set(attr, newValTxt.get(&quot;value&quot;));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   462
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   463
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   464
    Y.on(&quot;submit&quot;, updateVal, &quot;#changeValue&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   465
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   466
    function populateCurrentValue() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   467
        var selIndex = attrSel.get(&quot;selectedIndex&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   468
        var attr = attrOpts.item(selIndex).get(&quot;value&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   469
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   470
        currentValSpan.set(&quot;innerHTML&quot;, Y.Escape.html(o1.get(attr) + &quot;&quot;));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   471
        newValTxt.set(&quot;value&quot;, &quot;&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   472
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   473
        if (attr === &quot;foobar&quot;) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   474
            preventFoobarLbl.removeClass(&quot;hidden&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   475
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   476
            preventFoobarLbl.addClass(&quot;hidden&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   477
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   478
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   479
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   480
    populateCurrentValue();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   481
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   482
    Y.on(&quot;change&quot;, populateCurrentValue, attrSel);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   483
    &#x2F;&#x2F; End Example Form Handling
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   484
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   485
    &#x2F;&#x2F; Attribute Change Event Listners
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   486
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   487
    o1.after(&quot;fooChange&quot;, function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   488
        displayEvent(e, &quot;After fooChange&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   489
        currentValSpan.set(&quot;innerHTML&quot;, Y.Escape.html(e.newVal+&quot;&quot;));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   490
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   491
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   492
    o1.after(&quot;barChange&quot;, function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   493
        displayEvent(e, &quot;After barChange&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   494
        currentValSpan.set(&quot;innerHTML&quot;, Y.Escape.html(e.newVal+&quot;&quot;));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   495
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   496
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   497
    o1.on(&quot;foobarChange&quot;, function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   498
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   499
        if (preventFoobarChk.get(&quot;checked&quot;)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   500
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   501
            &#x2F;&#x2F; Calling preventDefault, in an &quot;on&quot; listener
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   502
            &#x2F;&#x2F; will prevent the attribute change from occuring
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   503
            &#x2F;&#x2F; and the after listener being called.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   504
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   505
            e.preventDefault();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   506
            displayEvent(null, &quot;On foobarChange (prevented)&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   507
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   508
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   509
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   510
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   511
    o1.after(&quot;foobarChange&quot;, function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   512
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   513
        &#x2F;&#x2F; This foobar after listener will not get called, 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   514
        &#x2F;&#x2F; if we end up preventing default in the &quot;on&quot; 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   515
        &#x2F;&#x2F; listener above.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   516
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   517
        displayEvent(e, &quot;After foobarChange&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   518
        currentValSpan.set(&quot;innerHTML&quot;, Y.Escape.html(e.newVal+&quot;&quot;));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   519
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   520
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   521
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   522
&lt;&#x2F;script&gt;</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   523
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   524
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   525
            </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   526
        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   527
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   528
        <div class="yui3-u-1-4">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   529
            <div class="sidebar">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   530
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   531
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   532
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   533
                    <div class="sidebox">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   534
                        <div class="hd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   535
                            <h2 class="no-toc">Examples</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   536
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   537
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   538
                        <div class="bd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   539
                            <ul class="examples">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   540
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   541
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   542
                                        <li data-description="Use the Attribute API to define, set and get attribute values.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   543
                                            <a href="attribute-basic.html">Basic Attribute Configuration</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   544
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   545
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   546
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   547
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   548
                                        <li data-description="Configure attributes to be readOnly or writeOnce.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   549
                                            <a href="attribute-rw.html">Read-Only and Write-Once Attributes</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   550
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   551
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   552
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   553
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   554
                                        <li data-description="How to listen for changes in attribute values.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   555
                                            <a href="attribute-event.html">Attribute Change Events</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   556
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   557
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   558
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   559
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   560
                                        <li data-description="Create a basic SpeedDater class, with Attribute support.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   561
                                            <a href="attribute-basic-speeddate.html">Attribute Based Speed Dating</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   562
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   563
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   564
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   565
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   566
                                        <li data-description="Refactors the basic Speed Dating example, to use attribute change events to update rendered elements, and have two instances react to another.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   567
                                            <a href="attribute-event-speeddate.html">Attribute Event Based Speed Dating</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   568
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   569
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   570
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   571
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   572
                                        <li data-description="Add custom methods to get and set attribute values and provide validation support.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   573
                                            <a href="attribute-getset.html">Attribute Getters, Setters and Validators</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   574
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   575
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   576
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   577
                            </ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   578
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   579
                    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   580
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   581
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   582
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   583
            </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   584
        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   585
    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   586
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   587
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   588
<script src="../assets/vendor/prettify/prettify-min.js"></script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   589
<script>prettyPrint();</script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   590
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   591
<script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   592
YUI.Env.Tests = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   593
    examples: [],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   594
    project: '../assets',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   595
    assets: '../assets/attribute',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   596
    name: 'attribute-event',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   597
    title: 'Attribute Change Events',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   598
    newWindow: '',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   599
    auto:  false 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   600
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   601
YUI.Env.Tests.examples.push('attribute-basic');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   602
YUI.Env.Tests.examples.push('attribute-rw');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   603
YUI.Env.Tests.examples.push('attribute-event');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   604
YUI.Env.Tests.examples.push('attribute-basic-speeddate');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   605
YUI.Env.Tests.examples.push('attribute-event-speeddate');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   606
YUI.Env.Tests.examples.push('attribute-getset');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   607
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   608
</script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   609
<script src="../assets/yui/test-runner.js"></script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   610
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   611
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   612
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   613
</body>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   614
</html>