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