aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJörn Zaefferer <joern.zaefferer@gmail.com>2013-09-11 22:11:58 +0200
committerJörn Zaefferer <joern.zaefferer@gmail.com>2013-09-11 22:26:34 +0200
commit6e799c39d33be8eee02224d2f754dc42228a4cbb (patch)
treea6134169056aa77286a821ba7f432026d7938881
parent37bba1eb920298994903e866625bb662f391a1f5 (diff)
downloadjquery-ui-6e799c39d33be8eee02224d2f754dc42228a4cbb.tar.gz
jquery-ui-6e799c39d33be8eee02224d2f754dc42228a4cbb.zip
Widget Bridge: Make the _init method optional. Add tests for both states. Fixes #9543 - Widget bridge: Make _init() optional.
-rw-r--r--tests/unit/widget/widget_core.js13
-rw-r--r--ui/jquery.ui.widget.js5
2 files changed, 16 insertions, 2 deletions
diff --git a/tests/unit/widget/widget_core.js b/tests/unit/widget/widget_core.js
index 3db79ec06..ec4c85874 100644
--- a/tests/unit/widget/widget_core.js
+++ b/tests/unit/widget/widget_core.js
@@ -1409,7 +1409,7 @@ asyncTest( "_delay", function() {
});
test( "$.widget.bridge()", function() {
- expect( 10 );
+ expect( 14 );
var instance, ret,
elem = $( "<div>" );
@@ -1427,6 +1427,9 @@ test( "$.widget.bridge()", function() {
},
getter: function() {
return "qux";
+ },
+ option: function( options ) {
+ deepEqual( options, {} );
}
});
@@ -1444,6 +1447,14 @@ test( "$.widget.bridge()", function() {
ret = elem.testWidget( "getter" );
equal( ret, "qux", "getter returns value" );
+
+ elem.testWidget();
+ ok( true, "_init is optional" );
+
+ TestWidget.prototype._init = function() {
+ ok( "_init", "_init now exists, so its called" );
+ };
+ elem.testWidget();
});
test( "$.widget.bridge() - widgetFullName", function() {
diff --git a/ui/jquery.ui.widget.js b/ui/jquery.ui.widget.js
index 885e2019f..b4aab5f3e 100644
--- a/ui/jquery.ui.widget.js
+++ b/ui/jquery.ui.widget.js
@@ -203,7 +203,10 @@ $.widget.bridge = function( name, object ) {
this.each(function() {
var instance = $.data( this, fullName );
if ( instance ) {
- instance.option( options || {} )._init();
+ instance.option( options || {} );
+ if ( instance._init ) {
+ instance._init();
+ }
} else {
$.data( this, fullName, new object( options, this ) );
}