在Angular中编写可重用指令时报告错误的好模式是什么?
我正在编写一些组件作为角度指令,目的是重新使用它们,期望开发人员稍后加入这个项目,而不是拥有关于使用该指令的所有信息.
我正在记录关于它的使用的指令和代码,并且我有单元测试,基本上是将其正确用于其他“文档”的示例.我仍然希望在他们使用该指令构建页面时回到开发人员那里有意义的响应/异常.
是否存在抛出常见异常或者记录的模式,用于帮助将错误使用指令传达给学习使用它的开发人员?
最佳答案 虽然这可能是一个比Angular更普遍的JS问题,但同样的理论仍然适用.你应该在try / catch / finally块中包装东西并在适当的时候抛出错误.
function Blah(isRequired, isOptional){
var X = 7, Y = 0;
try{
Y = X * isRequired;
}
catch(err){
throw new Error('You must provide a value for "isRequired"');
}
finally{
//this example has none, but do cleanup things here
}
}
如果要显示日志记录,可以使用Angular包装器写入控制台.它将在使用IE时尝试通过将它们写入console.log来写入console.debug来防止错误.
建立:
myapp.config(['$logProvider', function($logProvider){
$logProvider.debugEnabled(true);
})
.run(['$rootScope', '$log',
function ($rootScope, $log) {
'use strict';
//create a reference to $log on the root scope
$rootScope.$log = $log;
}]);
用法:
$scope.$log.log(message);
$scope.$log.debug(message);
$scope.$log.info(message);
$scope.$log.warn(message);
$scope.$log.error(message);
您还可以通过添加属性来启用/禁用指令中的日志记录.像数据日志启用的东西.
<div data-log-enabled my-directive>
</div>
在你的指令中,你这样处理它:
link: function(scope, element, attributes){
if(attributes.logEnabled){
scope.$log.debug('blah');
}
}
这样可以避免不必要的控制台输出,从而减慢应用程序的速度,还可以帮助开发人员最大限度地减少他们必须阅读的内容,以查找所需的信息.