diff --git a/src/runtime/components/util-browser.js b/src/runtime/components/util-browser.js index 2d874b0e5e..e8db71cdd5 100644 --- a/src/runtime/components/util-browser.js +++ b/src/runtime/components/util-browser.js @@ -11,14 +11,6 @@ var componentLookup = {}; var defaultDocument = document; var EMPTY_OBJECT = {}; -function getParentComponentForEl(node) { - while (node && !componentsByDOMNode.get(node)) { - node = node.previousSibling || node.parentNode; - node = (node && node.fragment) || node; - } - return node && componentsByDOMNode.get(node); -} - function getComponentForEl(el, doc) { if (el) { var node = @@ -26,7 +18,8 @@ function getComponentForEl(el, doc) { ? (doc || defaultDocument).getElementById(el) : el; if (node) { - return getParentComponentForEl(node); + var vElement = vElementsByDOMNode.get(node); + return vElement && vElement.___ownerComponent; } } } diff --git a/test/components-browser/fixtures/get-component-for-el-nested-fragments/components/child/index.marko b/test/components-browser/fixtures/get-component-for-el-nested-fragments/components/child/index.marko new file mode 100644 index 0000000000..ea4e4eef71 --- /dev/null +++ b/test/components-browser/fixtures/get-component-for-el-nested-fragments/components/child/index.marko @@ -0,0 +1,15 @@ +class { + onCreate(input) { + this.name = input.name; + } +} + + + <${input}/> + + + + +
+ + \ No newline at end of file diff --git a/test/components-browser/fixtures/get-component-for-el-nested-fragments/index.marko b/test/components-browser/fixtures/get-component-for-el-nested-fragments/index.marko new file mode 100644 index 0000000000..b179269ece --- /dev/null +++ b/test/components-browser/fixtures/get-component-for-el-nested-fragments/index.marko @@ -0,0 +1,19 @@ +class { + onCreate() { + this.name = "parent"; + } +} + + + <${input}/> + + +
+ + + + + + + +
\ No newline at end of file diff --git a/test/components-browser/fixtures/get-component-for-el-nested-fragments/test.js b/test/components-browser/fixtures/get-component-for-el-nested-fragments/test.js new file mode 100644 index 0000000000..90b71cd47b --- /dev/null +++ b/test/components-browser/fixtures/get-component-for-el-nested-fragments/test.js @@ -0,0 +1,14 @@ +var expect = require("chai").expect; +var getComponentForEl = require("marko/components").getComponentForEl; + +module.exports = function(helpers) { + var component = helpers.mount(require.resolve("./index.marko"), {}); + var root = component.getEl("root"); + var childA = root.querySelector(".child-a"); + var childB = root.querySelector(".child-b"); + var childC = root.querySelector(".child-c"); + + expect(getComponentForEl(childA)).has.property("name", "child-a"); + expect(getComponentForEl(childB)).has.property("name", "parent"); + expect(getComponentForEl(childC)).has.property("name", "child-c"); +};