From 61906d3517428b6d52d3284b8d26d1a46e01dad7 Mon Sep 17 00:00:00 2001 From: James Davies Date: Mon, 3 Jun 2013 13:04:12 +1000 Subject: fix($parse): unwrap promise when setting a field This fixes an inconsistency where you can't call the setter function when the expression resolves to a top level field name on a promise. Setting a field on an unresolved promise will throw an exception. (This shouldn't really happen in your template/js code and points to a programming error.) Closes #1827 --- src/ng/parse.js | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/ng/parse.js') diff --git a/src/ng/parse.js b/src/ng/parse.js index 9660c76f..7c244bd8 100644 --- a/src/ng/parse.js +++ b/src/ng/parse.js @@ -766,6 +766,17 @@ function setter(obj, path, setValue, fullExp) { obj[key] = propertyObj; } obj = propertyObj; + if (obj.then) { + if (!("$$v" in obj)) { + (function(promise) { + promise.then(function(val) { promise.$$v = val; }); } + )(obj); + } + if (obj.$$v === undefined) { + obj.$$v = {}; + } + obj = obj.$$v; + } } key = ensureSafeMemberName(element.shift(), fullExp); obj[key] = setValue; -- cgit v1.2.3