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

时间:2018-04-13 01:41:25

标签: angularjs ng-class angular1.6

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

我正在尝试将他的代码应用于第3项的粗体。我尽力尝试$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

1 个答案:

答案 0 :(得分:1)

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

  1. 您不包括angularJS
  2. 您正在ng-repeat examsList.exams以外的div点击examList controller
  3. 你有额外的&#39;)&#39;在eval数组中的最后一个值的末尾。
  4. eval数组中的所有规则目前都已解析为false
  5. 您定义的css课程没有bold规则。
  6. Plunkr