diff options
-rw-r--r-- | tests/unit/widget/widget_core.js | 26 | ||||
-rw-r--r-- | ui/jquery.ui.widget.js | 9 |
2 files changed, 34 insertions, 1 deletions
diff --git a/tests/unit/widget/widget_core.js b/tests/unit/widget/widget_core.js index 364838e3f..2673350f3 100644 --- a/tests/unit/widget/widget_core.js +++ b/tests/unit/widget/widget_core.js @@ -156,6 +156,32 @@ test("merge multiple option arguments", function() { }); }); +test( "_getCreateOptions()", function() { + expect( 1 ); + $.widget( "ui.testWidget", { + options: { + option1: "valuex", + option2: "valuex", + option3: "value3", + }, + _getCreateOptions: function() { + return { + option1: "override1", + option2: "overideX", + }; + }, + _create: function() { + same( this.options, { + disabled: false, + option1: "override1", + option2: "value2", + option3: "value3" + }); + } + }); + $( "<div>" ).testWidget({ option2: "value2" }); +}); + test( "re-init", function() { var div = $( "<div></div>" ), actions = []; diff --git a/ui/jquery.ui.widget.js b/ui/jquery.ui.widget.js index bc6408125..f41f9637a 100644 --- a/ui/jquery.ui.widget.js +++ b/ui/jquery.ui.widget.js @@ -145,7 +145,7 @@ $.Widget.prototype = { this.element = $( element ); this.options = $.extend( true, {}, this.options, - $.metadata && $.metadata.get( element )[ this.widgetName ], + this._getCreateOptions(), options ); var self = this; @@ -157,6 +157,13 @@ $.Widget.prototype = { this._trigger( "create" ); this._init(); }, + _getCreateOptions: function() { + var options = {}; + if ( $.metadata ) { + options = $.metadata.get( element )[ this.widgetName ]; + } + return options; + }, _create: function() {}, _init: function() {}, |