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;
}])
您的 plunk 有一些小问题,其中两个可以通过打开开发者控制台找到:
- 您不包括
angularJS
。
- 您正在尝试
ng-repeat
超过 examsList.exams
分配给 examList
controller
的 div
。
- 您在
eval
数组中最后一个值的末尾有一个额外的 ')'。
eval
数组中的所有规则当前解析为 false
。
- 您没有为
bold
class 定义的 css
规则。
我正在尝试使用 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;
}])
您的 plunk 有一些小问题,其中两个可以通过打开开发者控制台找到:
- 您不包括
angularJS
。 - 您正在尝试
ng-repeat
超过examsList.exams
分配给examList
controller
的div
。 - 您在
eval
数组中最后一个值的末尾有一个额外的 ')'。 eval
数组中的所有规则当前解析为false
。- 您没有为
bold
class 定义的css
规则。