aboutsummaryrefslogtreecommitdiffstats
path: root/src/ng/interpolate.js
diff options
context:
space:
mode:
authorBrian Ford2012-07-19 14:07:00 -0700
committerIgor Minar2012-08-30 14:50:22 -0700
commitd804bbcd51ec83bee1f4a3ccd42c3bd7eb38a988 (patch)
treeb72cd4cf0bbe954da001ebe420d18bf77948ffdf /src/ng/interpolate.js
parentd3fa7a2e9e93c9dae13d852b28c878f7d6b7c420 (diff)
downloadangular.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.js26
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;