Skip to content

Commit

Permalink
Widget: Added _setOptions method for handling normalized options sett…
Browse files Browse the repository at this point in the history
…ing. Fixes #6114 - Widget: Add _setOptions() method.
  • Loading branch information
scottgonzalez committed Sep 27, 2010
1 parent 0b6710a commit 9d88b56
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 5 deletions.
25 changes: 24 additions & 1 deletion tests/unit/widget/widget_core.js
Expand Up @@ -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() {},
Expand Down
13 changes: 9 additions & 4 deletions ui/jquery.ui.widget.js
Expand Up @@ -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" ) {
Expand All @@ -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;
Expand Down

0 comments on commit 9d88b56

Please sign in to comment.