Angularjs 如何在eval错误上用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>

我希望有一个简单的输入字段,您可以在其中键入javascript表达式,并在输入时对其进行评估,有点像穷人的计算器

到目前为止,我的作品。。但是现在我想在表达式本身无效时用css类来装饰它。有人能建议一种方法吗

<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类检查该值是否与过滤后的值相同,并根据该值设置类。我还确认它可以处理多个表达式

您是否尝试过使用?