diff --git a/src/components/taglib/TransformHelper/convertToComponent.js b/src/components/taglib/TransformHelper/convertToComponent.js
index 5f3749628..b85054cf9 100644
--- a/src/components/taglib/TransformHelper/convertToComponent.js
+++ b/src/components/taglib/TransformHelper/convertToComponent.js
@@ -6,14 +6,14 @@ var FLAG_HAS_BODY_EL = 2;
var FLAG_HAS_HEAD_EL = 4;
module.exports = function handleComponentBind(options) {
- if (this.firstBind) {
+ let context = this.context;
+ let builder = this.builder;
+
+ if (this.context.firstBind) {
return;
}
- this.firstBind = true;
-
- let context = this.context;
- let builder = this.builder;
+ context.firstBind = true;
let isLegacyComponent = this.isLegacyComponent = options.isLegacyComponent === true;
let componentModule = options.componentModule;
diff --git a/test/deprecated-components-browser/fixtures/widget-bind-different-roots/index.js b/test/deprecated-components-browser/fixtures/widget-bind-different-roots/index.js
new file mode 100644
index 000000000..51ad1514a
--- /dev/null
+++ b/test/deprecated-components-browser/fixtures/widget-bind-different-roots/index.js
@@ -0,0 +1,13 @@
+module.exports = require('marko/legacy-components').defineComponent({
+ template: require('./template.marko'),
+
+ getInitialState: function(input) {
+ return { interactive:input.interactive }
+ },
+
+ getTemplateData: function (state, input) {
+ return {
+ interactive: state.interactive
+ };
+ }
+});
\ No newline at end of file
diff --git a/test/deprecated-components-browser/fixtures/widget-bind-different-roots/template.marko b/test/deprecated-components-browser/fixtures/widget-bind-different-roots/template.marko
new file mode 100644
index 000000000..2e41ebde5
--- /dev/null
+++ b/test/deprecated-components-browser/fixtures/widget-bind-different-roots/template.marko
@@ -0,0 +1,8 @@
+
+
+
+
+ Non-interactive
+
\ No newline at end of file
diff --git a/test/deprecated-components-browser/fixtures/widget-bind-different-roots/test.js b/test/deprecated-components-browser/fixtures/widget-bind-different-roots/test.js
new file mode 100644
index 000000000..cb87ba1bf
--- /dev/null
+++ b/test/deprecated-components-browser/fixtures/widget-bind-different-roots/test.js
@@ -0,0 +1,14 @@
+var expect = require('chai').expect;
+
+module.exports = function (helpers) {
+ var widget = helpers.mount(require('./index'), {
+ interactive: true
+ });
+
+ expect(widget.el).to.be.instanceOf(HTMLButtonElement);
+
+ widget.setState('interactive', false);
+ widget.update();
+
+ expect(widget.el).to.be.instanceOf(HTMLDivElement);
+};
\ No newline at end of file