2014-05-23 21 views
4

这是可以配置的吗?Angular.js表达式抛出异常

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

Forgiving:在JavaScript中,试图评估未定义的属性会生成ReferenceError或TypeError。在Angular中,表达式评估原谅未定义且为空。

+1

你可能已经想通了这一点现在,但恐怕也没有办法来配置。 – gkalpak

回答

1

其实有,

在角中,$插值服务负责与绑定表达式的工作,因为这项服务是至赦的,你看不到任何错误。但是,您可以为它创建包装,以便在可能出现错误结果时通知您。下面

代码为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; 

    }); 
});