diff options
author | Scott González <scott.gonzalez@gmail.com> | 2010-09-27 11:21:09 -0400 |
---|---|---|
committer | Scott González <scott.gonzalez@gmail.com> | 2010-09-27 11:21:09 -0400 |
commit | 9d88b565d6f65dc1aaebfaf99699f6155370949c (patch) | |
tree | f40b589e75d7c57c1214b43dff0f8283bf20685a | |
parent | 0b6710aed7fc9a9412a975c9f70d3fd6a87c4b02 (diff) | |
download | jquery-ui-9d88b565d6f65dc1aaebfaf99699f6155370949c.tar.gz jquery-ui-9d88b565d6f65dc1aaebfaf99699f6155370949c.zip |
Widget: Added _setOptions method for handling normalized options setting. Fixes #6114 - Widget: Add _setOptions() method.
-rw-r--r-- | tests/unit/widget/widget_core.js | 25 | ||||
-rw-r--r-- | ui/jquery.ui.widget.js | 13 |
2 files changed, 33 insertions, 5 deletions
diff --git a/tests/unit/widget/widget_core.js b/tests/unit/widget/widget_core.js index 604222106..76d6543c2 100644 --- a/tests/unit/widget/widget_core.js +++ b/tests/unit/widget/widget_core.js @@ -209,7 +209,30 @@ test( ".option() - getter", function() { "modifying returned options hash does not modify plugin instance" ); }); -test( ".option() - setter", function() { +test( ".option() - delegate to ._setOptions()", function() { + var calls = []; + $.widget( "ui.testWidget", { + _create: function() {}, + _setOptions: function( options ) { + calls.push( options ); + } + }); + var div = $( "<div></div>" ).testWidget(); + + calls = []; + div.testWidget( "option", "foo", "bar" ); + same( calls, [{ foo: "bar" }], "_setOptions called for single option" ); + + calls = []; + div.testWidget( "option", { + bar: "qux", + quux: "quuux" + }); + same( calls, [{ bar: "qux", quux: "quuux" }], + "_setOptions called with multiple options" ); +}); + +test( ".option() - delegate to ._setOption()", function() { var calls = []; $.widget( "ui.testWidget", { _create: function() {}, diff --git a/ui/jquery.ui.widget.js b/ui/jquery.ui.widget.js index aef9b8378..866f7441e 100644 --- a/ui/jquery.ui.widget.js +++ b/ui/jquery.ui.widget.js @@ -176,12 +176,11 @@ $.Widget.prototype = { }, option: function( key, value ) { - var options = key, - self = this; + var options = key; if ( arguments.length === 0 ) { // don't return a reference to the internal hash - return $.extend( {}, self.options ); + return $.extend( {}, this.options ); } if (typeof key === "string" ) { @@ -192,11 +191,17 @@ $.Widget.prototype = { options[ key ] = value; } + this._setOptions( options ); + + return this; + }, + _setOptions: function( options ) { + var self = this; $.each( options, function( key, value ) { self._setOption( key, value ); }); - return self; + return this; }, _setOption: function( key, value ) { this.options[ key ] = value; |