From 971b65ec78f1a7258807a7b4ef802a14b273a35a Mon Sep 17 00:00:00 2001 From: Kris Selden Date: Wed, 10 Sep 2014 11:09:24 -0700 Subject: [PATCH] [BUGFIX release] fix finishChains for all chains that reference an obj not just the ones rooted at that object. --- packages/ember-metal/lib/chains.js | 24 +++++++++++---- .../tests/system/object/observer_test.js | 30 +++++++++++++++++++ 2 files changed, 49 insertions(+), 5 deletions(-) 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