aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott González <scott.gonzalez@gmail.com>2010-10-06 15:11:49 -0400
committerScott González <scott.gonzalez@gmail.com>2010-10-06 15:11:49 -0400
commit512825d358851f4b2b584f1b6463e9cd48f31752 (patch)
tree4953644ceec329dc6522dd75925e3ddd844424e3
parentc3b282fceb8b5161c013575bf01c652d6573d72e (diff)
downloadjquery-ui-512825d358851f4b2b584f1b6463e9cd48f31752.tar.gz
jquery-ui-512825d358851f4b2b584f1b6463e9cd48f31752.zip
Widget: Added ability to define how to find options on init. Fixes #6158 - Widget: Ability to define new methods for gathering options on init.
-rw-r--r--tests/unit/widget/widget_core.js26
-rw-r--r--ui/jquery.ui.widget.js9
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() {},