【发布时间】:2017-01-16 17:31:24
【问题描述】:
我在服务中有一个类似这样的功能:
Policies 是一个函数列表,如果违反策略(例如密码没有数字或大写字母),将抛出错误
function myFunction(policies, password){
var policiesError = '';
policies.forEach(function(policy) {
try {
policy(password, payload);
} catch (err) {
policiesError += err.message + '\n'; // Also tried `concat()`
}
});
if (policiesError){
throw new Error(policiesError);
}
}
在我的controller 我有:
try{
myService.myFunction(myFunctions, 'password');
} catch (err){
$scope.policiesError = err.message; // Which is used in as {{policiesError}} to display
}
控制器中消息的结果是这样的:
"Password too shortPassword has no lettersInvalid characters in password"
但我实际上需要它:
"Password too short
Password has no letters
Invalid characters in password"
这很简单,但是我的头撞在桌子上一段时间了,这很令人沮丧。
关于如何使用new Error 获得格式良好的消息并捕获它有什么建议吗?
【问题讨论】:
-
是 HTML 吗?然后使用
<br />。 -
每个新行都会用句点分隔吗?如果是这样,您可以简单地使用:
err.message.split('.')后跟err.message.join('\n') -
我可能错过了我也验证特殊字符,那是我不能按句点分割。 (也有一些错误消息中有句点)
-
“实际上并不警觉”——然后呢?请显示显示消息的实际代码,因为它似乎是换行符未正确显示的罪魁祸首
-
@Bergi,
$scope.var_in_scope = err.message;和那个在 html 中使用,例如:<span ng-if="var_in_scope" >{{var_in_scope}}</span>
标签: javascript angularjs string error-handling newline