diff --git a/packages/ember-metal/lib/chains.js b/packages/ember-metal/lib/chains.js index 9e9e99a9633..a7816df2411 100644 --- a/packages/ember-metal/lib/chains.js +++ b/packages/ember-metal/lib/chains.js @@ -324,12 +324,26 @@ ChainNodePrototype.didChange = function(events) { export function finishChains(obj) { // We only create meta if we really have to - var m = obj['__ember_meta__'], chains = m && m.chains; - if (chains) { - if (chains.value() !== obj) { + var m = obj['__ember_meta__'], + chains, chainWatchers, chainNodes; + if (m) { + // finish any current chains node watchers that reference obj + chainWatchers = m.chainWatchers; + if (chainWatchers) { + for(var key in chainWatchers) { + if (!chainWatchers.hasOwnProperty(key)) { continue; } + chainNodes = chainWatchers[key]; + if (chainNodes) { + for (var i=0,l=chainNodes.length;i