diff options
| author | Brian Ford | 2012-07-19 14:07:00 -0700 | 
|---|---|---|
| committer | Igor Minar | 2012-08-30 14:50:22 -0700 | 
| commit | d804bbcd51ec83bee1f4a3ccd42c3bd7eb38a988 (patch) | |
| tree | b72cd4cf0bbe954da001ebe420d18bf77948ffdf /src/ng/interpolate.js | |
| parent | d3fa7a2e9e93c9dae13d852b28c878f7d6b7c420 (diff) | |
| download | angular.js-d804bbcd51ec83bee1f4a3ccd42c3bd7eb38a988.tar.bz2 | |
feat($interpolate): provide contextual error messages
if an exception occurs during interpolation of a string
(e.g. name() in "Hello, {{name()}}!" throws an exception) we now print
an error message with the expression that was being evaluated when the
exception was thrown.
Diffstat (limited to 'src/ng/interpolate.js')
| -rw-r--r-- | src/ng/interpolate.js | 26 | 
1 files changed, 16 insertions, 10 deletions
| diff --git a/src/ng/interpolate.js b/src/ng/interpolate.js index 149f0c86..dcf05d77 100644 --- a/src/ng/interpolate.js +++ b/src/ng/interpolate.js @@ -52,7 +52,7 @@ function $InterpolateProvider() {    }; -  this.$get = ['$parse', function($parse) { +  this.$get = ['$parse', '$exceptionHandler', function($parse, $exceptionHandler) {      var startSymbolLength = startSymbol.length,          endSymbolLength = endSymbol.length; @@ -124,18 +124,24 @@ function $InterpolateProvider() {        if (!mustHaveExpression  || hasInterpolation) {          concat.length = length;          fn = function(context) { -          for(var i = 0, ii = length, part; i<ii; i++) { -            if (typeof (part = parts[i]) == 'function') { -              part = part(context); -              if (part == null || part == undefined) { -                part = ''; -              } else if (typeof part != 'string') { -                part = toJson(part); +          try { +            for(var i = 0, ii = length, part; i<ii; i++) { +              if (typeof (part = parts[i]) == 'function') { +                part = part(context); +                if (part == null || part == undefined) { +                  part = ''; +                } else if (typeof part != 'string') { +                  part = toJson(part); +                }                } +              concat[i] = part;              } -            concat[i] = part; +            return concat.join(''); +          } +          catch(err) { +            var newErr = new Error('Error while interpolating: ' + text + '\n' + err.toString()); +            $exceptionHandler(newErr);            } -          return concat.join('');          };          fn.exp = text;          fn.parts = parts; | 
