Angularjs 如何在eval错误上用css类修饰输入字段
我希望有一个简单的输入字段,您可以在其中键入javascript表达式,并在输入时对其进行评估,有点像穷人的计算器 到目前为止,我的作品。。但是现在我想在表达式本身无效时用css类来装饰它。有人能建议一种方法吗Angularjs 如何在eval错误上用css类修饰输入字段,angularjs,Angularjs,我希望有一个简单的输入字段,您可以在其中键入javascript表达式,并在输入时对其进行评估,有点像穷人的计算器 到目前为止,我的作品。。但是现在我想在表达式本身无效时用css类来装饰它。有人能建议一种方法吗 <head> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script> <script>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
<script>
function Ctl($scope) {
$scope.expr = '1+1';
}
angular.module('filters', []).
filter('evaluate', function() {
return function(input) {
try {
return eval(input);
} catch (e) {
return input;
}
};
});
angular.module('main', ['filters']);</script>
<head>
<body ng-controller="Ctl" ng-app="main">
<div><input type="text" ng-model="expr"></div>
<span>{{expr|evaluate}}</span>
</body>
功能Ctl($scope){
$scope.expr='1+1';
}
模块('filters',[])。
过滤器('evaluate',函数(){
返回函数(输入){
试一试{
返回评估(输入);
}捕获(e){
返回输入;
}
};
});
模块('main',['filters']);
{{expr | evaluate}}
使用Manny D提供的建议,我对代码进行了如下修改,看起来一切正常。关于不直接使用'this'参数有一个警告,但我认为我在这里可以这样做。。有人想评论吗
<head>
<style type="text/css">
.red {background-color: #fee;}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
<script>
function Ctl($scope) {
$scope.cls = 'green';
$scope.expr = '1+1';
}
angular.module('filters', []).
filter('evaluate', function() {
return function(input, a1, a2) {
try {
this.cls = 'green';
return res = eval(input);
} catch (e) {
this.cls = 'red';
return input;
}
};
});
angular.module('main', ['filters']); // declare dependencies</script>
<head>
<body ng-controller="Ctl" ng-app="main">
<div><input type="text" ng-class="cls" ng-model="expr"></div>
<span>{{expr|evaluate}}</span>
</body>
.red{背景色:#fee;}
功能Ctl($scope){
$scope.cls='green';
$scope.expr='1+1';
}
模块('filters',[])。
过滤器('evaluate',函数(){
返回功能(输入,a1,a2){
试一试{
this.cls='绿色';
返回res=评估(输入);
}捕获(e){
this.cls=‘红色’;
返回输入;
}
};
});
角度.module('main',['filters']);//声明依赖项
{{expr | evaluate}}
这个“this”的问题是,如果您要进行多个过滤器评估,它将不起作用。范围不是与您正在处理的项隔离的。但有一个更简单的方法。只需使用ng类检查该值是否与过滤后的值相同,并根据该值设置类。我还确认它可以处理多个表达式
您是否尝试过使用?