Angular.js (1.6.9) 使用 $eval 有条件地应用 class

Angular.js (1.6.9) conditonally apply class using $eval

我正在尝试使用 ng-class 在 ng-repeat 中应用条件格式。条件应基于对象数据字符串的评估。

我正在尝试让他的代码将粗体应用于第三项。我已经尽力尝试 $eval$parse 但无济于事。

  <body ng-app="examsApp">
    <div ng-controller="ExamsController as examsList">
      <div ng-repeat="exam in examsList.exams">
        <span ng-repeat="levelnum in exam.levels.levelnums" ng-class="{ 'bold': $eval(exam.levels.evalby[$index]) }">
          {{levelnum}}
        </span>
      </div>
    </div>
  </body>


var data = [
    {
        "id": "exam1",
        "text": "Exam 1",
        "levels":
            {
                "levelnums": ['2', '3', '4', '5'],
                "evalby": ['$scope.bold === 0', '$scope.bold ==== 1', '$scope.bold === 2', '$scope.bold === 3']
            }
    }
]

angular.module('examsApp', [])
    .controller('ExamsController', ['$scope', function ($scope) {
        var examsList = this;
        examsList.exams = data;

        $scope.bold = 2;
}])

Plunkr

您的 plunk 有一些小问题,其中两个可以通过打开开发者控制台找到:

  1. 您不包括 angularJS
  2. 您正在尝试 ng-repeat 超过 examsList.exams 分配给 examList controllerdiv
  3. 您在 eval 数组中最后一个值的末尾有一个额外的 ')'。
  4. eval 数组中的所有规则当前解析为 false
  5. 您没有为 bold class 定义的 css 规则。

Plunkr