diff --git a/packages/ember-htmlbars/lib/hooks/component.js b/packages/ember-htmlbars/lib/hooks/component.js index 1e8fc139e21..9c09b731004 100644 --- a/packages/ember-htmlbars/lib/hooks/component.js +++ b/packages/ember-htmlbars/lib/hooks/component.js @@ -2,6 +2,8 @@ import { assert } from 'ember-metal/debug'; import ComponentNodeManager from 'ember-htmlbars/node-managers/component-node-manager'; import buildComponentTemplate, { buildHTMLTemplate } from 'ember-views/system/build-component-template'; import lookupComponent from 'ember-htmlbars/utils/lookup-component'; +import assign from 'ember-metal/assign'; +import EmptyObject from 'ember-metal/empty_object'; import Cache from 'ember-metal/cache'; import { CONTAINS_DASH_CACHE, @@ -41,9 +43,10 @@ export default function componentHook(renderNode, env, scope, _tagName, params, * on top of the closure component attributes. * */ - processPositionalParamsFromCell(componentCell, params, attrs); + let newAttrs = assign(new EmptyObject(), attrs); + processPositionalParamsFromCell(componentCell, params, newAttrs); params = []; - attrs = mergeInNewHash(componentCell[COMPONENT_HASH], attrs); + attrs = mergeInNewHash(componentCell[COMPONENT_HASH], newAttrs); } } diff --git a/packages/ember-htmlbars/lib/keywords/closure-component.js b/packages/ember-htmlbars/lib/keywords/closure-component.js index 3c53d273435..f8f620fa7d9 100644 --- a/packages/ember-htmlbars/lib/keywords/closure-component.js +++ b/packages/ember-htmlbars/lib/keywords/closure-component.js @@ -7,6 +7,7 @@ import { assert } from 'ember-metal/debug'; import isNone from 'ember-metal/is_none'; import symbol from 'ember-metal/symbol'; import BasicStream from 'ember-metal/streams/stream'; +import EmptyObject from 'ember-metal/empty_object'; import { read } from 'ember-metal/streams/utils'; import { labelForSubexpr } from 'ember-htmlbars/hooks/subexpr'; import assign from 'ember-metal/assign'; @@ -54,12 +55,14 @@ function createClosureComponentCell(env, originalComponentPath, params, hash, la assert(`Component path cannot be null in ${label}`, !isNone(componentPath)); + let newHash = assign(new EmptyObject(), hash); + if (isComponentCell(componentPath)) { - return createNestedClosureComponentCell(componentPath, params, hash); + return createNestedClosureComponentCell(componentPath, params, newHash); } else { assert(`The component helper cannot be used without a valid component name. You used "${componentPath}" via ${label}`, isValidComponentPath(env, componentPath)); - return createNewClosureComponentCell(env, componentPath, params, hash); + return createNewClosureComponentCell(env, componentPath, params, newHash); } }