我正在使用:
<button data-ng-repeat="question in test.testquestions"
data-ng-class="{current: question.number == test.currentQuestion, correct: question.result == 't', incorrect: qh.result == 'f', shown: qh.result == 's', tagged: qh.tag == true}"
data-ng-click="getDetail(qh.i, q.questionId)"
data-ng-disabled="q.qs.i == qh.i">
代码可以工作,但是类定义很长,以至于我无法在编辑窗口中看到它。 有什么方法可以将它传播到多行,甚至可以在我的控制器中进行定义吗?
答案 0 :(得分:2)
您当然可以从控制器获取它,但结果因ng-repeat
中的测试而异,因此您需要从函数中获取它。您希望每次都避免返回不同的对象,因此您需要以某种方式缓存它。下面是使用test.currentQuestion
的示例,假设它是一个简单的值类型(如int)。
var classes = {};
$scope.getClasses = function(question) {
if(!classes[question.number]) {
classes[question.number] = {};
}
var result = classes[question.number];
result.current = question.number === $scope.test.currentQuestion;
result.correct = question.result === 't';
result.incorrect = question.result === 'f';
result.shown = question.result === 's';
result.tagged = question.tag === true;
return result;
};
然后,您可以从您的视图中调用它:
data-ng-class="getClasses(test)"
答案 1 :(得分:1)
只需将ng-class表达式包装在新行上,就可以了。