diff --git a/examples/ThemeProvider.html b/examples/ThemeProvider.html
new file mode 100644
index 000000000..7848ee406
--- /dev/null
+++ b/examples/ThemeProvider.html
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/base/context.js b/src/base/context.js
index 67ef704c0..47fdd6c64 100644
--- a/src/base/context.js
+++ b/src/base/context.js
@@ -15,31 +15,33 @@ BI.Context = BI.inherit(BI.Widget, {
render: function () {
var self = this, o = this.options;
- this.context = BI.createWidget(o.items[0] || o.el, {
+ if (o.context) {
+ this.context = BI.useContext(o.context);
+ }
+ this.widget = BI.createWidget((o.items[0] || o.el)(this.context), {
element: this,
});
- this.context.on(BI.Controller.EVENT_CHANGE, function () {
+ this.widget.on(BI.Controller.EVENT_CHANGE, function () {
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
});
},
- created: function () {
+ __initWatch: function () {
+ BI.Context.superclass.__initWatch.call(this);
var o = this.options;
- if (o.context) {
- BI.watch(o.context, o.watch);
- }
+ BI.watch(this.context, o.context, o.watch);
},
setValue: function (v) {
- this.context.setValue(v);
+ this.widget.setValue(v);
},
getValue: function () {
- return this.context.getValue();
+ return this.widget.getValue();
},
populate: function () {
- this.context.populate.apply(this, arguments);
+ this.widget.populate.apply(this, arguments);
},
});
BI.shortcut("bi.context", BI.Context);