From 3a65822023119b71deab5e298c7ef2de204caa13 Mon Sep 17 00:00:00 2001 From: Jussi Kosunen Date: Thu, 15 Aug 2013 15:14:54 +0300 Subject: fix($parse): handle promises returned from parsed function calls When a parsed function call returns a promise, the evaluated value is the resolved value of the promise rather than the promise object. Closes #3503 --- src/ng/parse.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'src/ng/parse.js') diff --git a/src/ng/parse.js b/src/ng/parse.js index 9eeb1439..5597acd8 100644 --- a/src/ng/parse.js +++ b/src/ng/parse.js @@ -689,9 +689,21 @@ function parser(text, json, $filter, csp){ } var fnPtr = fn(scope, locals, context) || noop; // IE stupidity! - return fnPtr.apply + var v = fnPtr.apply ? fnPtr.apply(context, args) : fnPtr(args[0], args[1], args[2], args[3], args[4]); + + // Check for promise + if (v && v.then) { + var p = v; + if (!('$$v' in v)) { + p.$$v = undefined; + p.then(function(val) { p.$$v = val; }); + } + v = v.$$v; + } + + return v; }; } -- cgit v1.2.3