当前位置: 首页 > 面试题库 >

基于价值应用ng-class

伏德义
2023-03-14
问题内容

我有一个简单的程序ng-repeat,它显示得分列表以及正值或负值的值。

我想做的是当值是Negative时,显示红色的背景CSS类,而当Positive时,显示绿色的CSS类。但是,由于某种原因,我总是在页面上看到
红色的 CSS类。

HTML:

<tr ng-repeat="scores in Test" ng-class="{true: 'warning', false: 'ok'}[scores.Indicator == 'Negative']">                       
     <td>Overall: {{ scores.Indicator }}</td>
</tr>

CSS:

.warning {
    background: red;
}

.ok {
    background: green;
}

问题答案:

我以前没有看过那种特殊的语法,其背后的原理是{true: 'warning', false: 'ok'}[scores.Indicator == 'Negative']什么?

ngClass在这里使用的方式是

<tr ng-repeat="scores in Test" ng-class="{warning: (scores.Indicator == 'Negative'), ok: (scores.Indicator != 'Negative')}">

那样有用吗?

为了提高可读性,您也可以将其委托给控制器

<tr ng-repeat="scores in Test" ng-class="scoreClass(scores)">

$scope.scoreClass = function(scores) {
    return scores.Indicator == 'Negative' ? 'warning': 'ok';
}

或者您可以创建一个指令

<tr ng-repeat="scores in Test" score-class scores="scores">

.directive('scoreClass', [function() {

    return {
        restrict: 'A',
        scope: {
            scores: '=',
        },
        link: function(scope, element, attrs, controller) {
            scope.$watch('scores', function() {
                element.removeClass('ok');
                element.removeClass('warning');
                if (scope.scores.Indicator == 'Negative') {
                    element.addClass('warning');
                } else {
                    element.addClass('ok');
                }
            }, true);
        }
    };
}]);


 类似资料:
  • 问题内容: 我试图根据其类有条件地将指令应用于元素。 这是我的问题的一个简单案例,请参阅此小提琴中的结果。在此示例中,我使用了类名到with的布尔形式的映射。在我的实际情况下,我想使用函数的布尔结果。 标记: JS: 为什么不将指令应用于通过类的指令?我对AngularJS处理指令的顺序有误解吗? 我应该如何基于表达式的求值有条件地将指令应用于元素? 问题答案: 在编译过程 之后 ,只需在DOM上

  • 我有三种型号 发票 演播室 R_studio_pay 关系如下 工作室有很多发票 工作室有一个R_studio_pay 我需要发票- 我试着使用whereHas studio- 但无法在何处应用条件。

  • 问题内容: 我有一个表单,用于答复仅在为true 时才想显示的消息,每次单击答复按钮时,我都希望切换是否显示该表单。我怎样才能做到这一点? 问题答案: 您只需要在ng-click事件上切换“ isReplyFormOpen”的值

  • 问题内容: 我试图使用 AngularJS 提供的和函数显示/隐藏一些HTML 。 **** 根据文档,这些功能的各自用法如下: ngHide – {表达式}-如果表达式为true,则分别显示或隐藏该元素。ngShow – {表达式}-如果表达式为真,则分别显示或隐藏该元素。 这适用于以下用例: 但是,如果我们使用对象中的参数作为表达式,则和被赋予正确的/ 值,但这些值不会被视为布尔值,因此始终返

  • 问题内容: 我在.html页面中有一个下拉列表, 落下: 当用户选择一个值时,我想执行一个动作。因此,在我的控制器中,我做到了: 控制器: 但是更改下拉列表中的值不会触发代码: 结果,我在select标记上尝试了另一个带有:的方法 和 功能: 但是会存储到子作用域中。我读到父级无法访问子级作用域。 当下拉列表中的选定值更改时,执行某项操作的正确/最佳方法是什么?如果是方法1,我的代码在做什么错?

  • 我有以下枚举。 假设我有一个传递枚举值的函数,比如 我想应用这个。平均值()。min()。基于枚举值的流上的max()方法。 我怎样才能做到这一点?我不想在某个函数中使用简单的开关函数,而是在这个返回语句中。 所以我想要一些 其中decidewhichmethodshouldbeeused()根据枚举决定使用哪个函数。