抛出Angular.js表达式的异常

时间:2014-05-23 20:34:53

标签: angularjs

这可以配置吗?

来自here,表达是宽容的,但我想知道我的错误是什么。

  

原谅:在JavaScript中,尝试评估未定义的属性会生成ReferenceError或TypeError。在Angular中,表达式求值是对undefined和null的宽容。

1 个答案:

答案 0 :(得分:1)

实际上有,

在Angular中,$ interpolate服务负责处理绑定表达式,因为此服务是宽容的,您不会看到任何错误。但是,您可以为它创建包装器,以便在可能产生错误结果时通知。

以下代码来自http://odetocode.com/ See this blog post

app.config(function($provide){
    $provide.decorator("$interpolate", function($delegate){

        var interpolateWrap = function(){
            var interpolationFn = $delegate.apply(this, arguments);
            if(interpolationFn) {
                return interpolationFnWrap(interpolationFn, arguments);
            }
        };

        var interpolationFnWrap = function(interpolationFn, interpolationArgs){
            return function(){
                var result = interpolationFn.apply(this, arguments);
                var log = result ? console.log : console.warn;
                log.call(console, "interpolation of  " + interpolationArgs[0].trim(), 
                                  ":", result.trim());
                return result;
            };
        };

        angular.extend(interpolateWrap, $delegate);
        return interpolateWrap;

    });
});