]> source.dussan.org Git - jquery-ui.git/commitdiff
Update data naming for Widget, including backwards compability. Updated tests and...
authorJörn Zaefferer <joern.zaefferer@gmail.com>
Thu, 1 Mar 2012 13:30:02 +0000 (14:30 +0100)
committerJörn Zaefferer <joern.zaefferer@gmail.com>
Thu, 1 Mar 2012 13:30:02 +0000 (14:30 +0100)
tests/unit/widget/widget_core.js
ui/jquery.ui.widget.js

index c451c4cf6e0428285d7e0bd3e70b54985d39ed28..b4bb6356dcfd5410e7987fdd2cadded24a4429ad 100644 (file)
@@ -32,28 +32,28 @@ test( "element normalization", function() {
                // workaround for core ticket #8381
                this.element.appendTo( "#qunit-fixture" );
                ok( this.element.is( "div" ), "generated div" );
-               deepEqual( this.element.data( "testWidget" ), this, "intance stored in .data()" );
+               deepEqual( this.element.data( "ui-testWidget" ), this, "instance stored in .data()" );
        };
        $.ui.testWidget();
 
        $.ui.testWidget.prototype.defaultElement = "<span data-test='pass'></span>";
        $.ui.testWidget.prototype._create = function() {
                ok( this.element.is( "span[data-test=pass]" ), "generated span with properties" );
-               deepEqual( this.element.data( "testWidget" ), this, "instace stored in .data()" );
+               deepEqual( this.element.data( "ui-testWidget" ), this, "instace stored in .data()" );
        };
        $.ui.testWidget();
 
        elem = $( "<input>" );
        $.ui.testWidget.prototype._create = function() {
                deepEqual( this.element[ 0 ], elem[ 0 ], "from element" );
-               deepEqual( elem.data( "testWidget" ), this, "instace stored in .data()" );
+               deepEqual( elem.data( "ui-testWidget" ), this, "instace stored in .data()" );
        };
        $.ui.testWidget( {}, elem[ 0 ] );
 
        elem = $( "<div>" );
        $.ui.testWidget.prototype._create = function() {
                deepEqual( this.element[ 0 ], elem[ 0 ], "from jQuery object" );
-               deepEqual( elem.data( "testWidget" ), this, "instace stored in .data()" );
+               deepEqual( elem.data( "ui-testWidget" ), this, "instace stored in .data()" );
        };
        $.ui.testWidget( {}, elem );
 
@@ -61,7 +61,7 @@ test( "element normalization", function() {
                .appendTo( "#qunit-fixture" );
        $.ui.testWidget.prototype._create = function() {
                deepEqual( this.element[ 0 ], elem[ 0 ], "from selector" );
-               deepEqual( elem.data( "testWidget" ), this, "instace stored in .data()" );
+               deepEqual( elem.data( "ui-testWidget" ), this, "instace stored in .data()" );
        };
        $.ui.testWidget( {}, "#element-normalization-selector" );
 
@@ -73,8 +73,16 @@ test( "element normalization", function() {
        $.ui.testWidget();
 });
 
+test( "custom selector expression", function() {
+       var elem = $( "<div>" ).appendTo( "#qunit-fixture" );
+       $.widget( "ui.testWidget", {} );
+       elem.testWidget();
+       deepEqual( $( ":ui-testWidget" )[0], elem[0] );
+       elem.testWidget( "destroy" );
+});
+
 test( "jQuery usage", function() {
-       expect( 13 );
+       expect( 15 );
 
        var shouldCreate = false;
 
@@ -112,12 +120,18 @@ test( "jQuery usage", function() {
                .testWidget();
        shouldCreate = false;
 
-       var instance = elem.data( "testWidget" );
+       var instance = elem.data( "ui-testWidget" );
        equal( typeof instance, "object", "instance stored in .data(pluginName)" );
        equal( instance.element[0], elem[0], "element stored on widget" );
        var ret = elem.testWidget( "methodWithParams", "value1", "value2" );
        equal( ret, elem, "jQuery object returned from method call" );
 
+       // 1.9 BC for #7810
+       // TODO remove
+       var bcInstance = elem.data("testWidget");
+       equal( typeof bcInstance, "object", "instance stored in .data(pluginName)" );
+       equal( bcInstance.element[0], elem[0], "element stored on widget" );
+
        ret = elem.testWidget( "getterSetterMethod" );
        equal( ret, 5, "getter/setter can act as getter" );
        ret = elem.testWidget( "getterSetterMethod", 30 );
@@ -160,7 +174,7 @@ test( "direct usage", function() {
        var instance = new $.ui.testWidget( {}, elem );
        shouldCreate = false;
 
-       equal( $( elem ).data( "testWidget" ), instance,
+       equal( $( elem ).data( "ui-testWidget" ), instance,
                "instance stored in .data(pluginName)" );
        equal( instance.element[ 0 ], elem, "element stored on widget" );
 
@@ -374,7 +388,7 @@ test( "._super()", function() {
                }
        });
 
-       instance = $( "<div>" ).testWidget3().data( "testWidget3" );
+       instance = $( "<div>" ).testWidget3().data( "ui-testWidget3" );
        instance.method( 5 );
        delete $.ui.testWidget3;
        delete $.ui.testWidget2;
@@ -411,7 +425,7 @@ test( "._superApply()", function() {
                }
        });
 
-       instance = $( "<div>" ).testWidget3().data( "testWidget3" );
+       instance = $( "<div>" ).testWidget3().data( "ui-testWidget3" );
        instance.method( 5, 10 );
        delete $.ui.testWidget3;
        delete $.ui.testWidget2;
@@ -521,7 +535,7 @@ test( ".option() - deep option setter", function() {
        $.widget( "ui.testWidget", {} );
        var div = $( "<div>" ).testWidget();
        function deepOption( from, to, msg ) {
-               div.data( "testWidget" ).options.foo = from;
+               div.data( "ui-testWidget" ).options.foo = from;
                $.ui.testWidget.prototype._setOption = function( key, value ) {
                        deepEqual( key, "foo", msg + ": key" );
                        deepEqual( value, to, msg + ": value" );
@@ -804,7 +818,7 @@ test( "._trigger() - no event, no ui", function() {
                        deepEqual( ui, {}, "empty ui hash passed" );
                        handlers.push( this );
                });
-       deepEqual( $( "#widget" ).data( "testWidget" )._trigger( "foo" ), true,
+       deepEqual( $( "#widget" ).data( "ui-testWidget" )._trigger( "foo" ), true,
                "_trigger returns true when event is not cancelled" );
        deepEqual( handlers, [
                $( "#widget" )[ 0 ],
@@ -832,7 +846,7 @@ test( "._trigger() - cancelled event", function() {
                ok( true, "event was triggered" );
                return false;
        });
-       deepEqual( $( "#widget" ).data( "testWidget" )._trigger( "foo" ), false,
+       deepEqual( $( "#widget" ).data( "ui-testWidget" )._trigger( "foo" ), false,
                "_trigger returns false when event is cancelled" );
 });
 
@@ -846,7 +860,7 @@ test( "._trigger() - cancelled callback", function() {
                        return false;
                }
        });
-       deepEqual( $( "#widget" ).data( "testWidget" )._trigger( "foo" ), false,
+       deepEqual( $( "#widget" ).data( "ui-testWidget" )._trigger( "foo" ), false,
                "_trigger returns false when callback returns false" );
 });
 
index 2d48ae26d5e74c97b2a7c288b8341ae0e7ab78d3..d11f993c6bdb94af2a8754a8b1b3f6741e61cb7e 100644 (file)
@@ -36,7 +36,7 @@ $.widget = function( name, base, prototype ) {
 
        // create selector for plugin
        $.expr[ ":" ][ fullName ] = function( elem ) {
-               return !!$.data( elem, name );
+               return !!$.data( elem, fullName );
        };
 
        $[ namespace ] = $[ namespace ] || {};
@@ -148,6 +148,7 @@ $.widget.extend = function( target ) {
 };
 
 $.widget.bridge = function( name, object ) {
+       var fullName = object.prototype.widgetBaseClass;
        $.fn[ name ] = function( options ) {
                var isMethodCall = typeof options === "string",
                        args = slice.call( arguments, 1 ),
@@ -160,7 +161,9 @@ $.widget.bridge = function( name, object ) {
 
                if ( isMethodCall ) {
                        this.each(function() {
-                               var instance = $.data( this, name );
+                               // 1.9 BC for #7810
+                               // TODO remove fallback to name
+                               var instance = $.data( this, fullName ) || $.data( this, name );
                                if ( !instance ) {
                                        return $.error( "cannot call methods on " + name + " prior to initialization; " +
                                                "attempted to call method '" + options + "'" );
@@ -178,7 +181,9 @@ $.widget.bridge = function( name, object ) {
                        });
                } else {
                        this.each(function() {
-                               var instance = $.data( this, name );
+                               // 1.9 BC for #7810
+                               // TODO remove fallback to name
+                               var instance = $.data( this, fullName ) || $.data( this, name );
                                if ( instance ) {
                                        instance.option( options || {} )._init();
                                } else {
@@ -217,7 +222,10 @@ $.Widget.prototype = {
                this.focusable = $();
 
                if ( element !== this ) {
+                       // 1.9 BC for #7810
+                       // TODO remove dual storage
                        $.data( element, this.widgetName, this );
+                       $.data( element, this.widgetBaseClass, this );
                        this._bind({ remove: "destroy" });
                        this.document = $( element.style ?
                                // element within the document