Я использую Angular ng-table
с фильтрацией для тестовой платформы подготовки. Я храню результаты опроса как 0 or 1
за вопрос в БД, но вам необходимо показать их Correct
или Incorrect
.Добавить условное значение для фильтра
Я могу сделать это с {{q.result == 1 ? 'Correct' : 'Incorrect'}}
Но это также должно применяться к фильтрации, а это означает, пользователь должен иметь возможность вводить «Правильно» и фильтровать все вопросы с q.result = 1.
<tr ng-repeat="q in $data">
<td title="'Correct/Incorrect'" filter="{ result: 'text'}" sortable="'q.result'" ng-class="{correct: q.result == 1, incorrect: q.result == 0}">
{{q.result == 1 ? 'Correct' : 'Incorrect'}}
</td>
Я пробовал изменить filter="{ result: 'text'}
, чтобы следовать тройному соглашению выше, но это не работает.
filter="{(result == 1 ? 'Correct' : 'Incorrect') : 'text'}"
дает ошибку:
Syntax Error: Token '(' invalid key at column 2 of the expression [{(result == 1 ? 'Correct' : 'Incorrect') : 'text'}] starting at [(result == 1 ? 'Correct' : 'Incorrect') : 'text'}].
Я использую директиву:
angular
.module('DDE')
.directive('results',['$rootScope', 'NgTableParams', function ($rootScope, NgTableParams) {
return {
restrict: 'AE',
scope: {},
transclude: true,
templateUrl: '/html/directives/results.html',
link: function(scope, elem, attr){
scope.questions = [];
/*
If user took a new test, show results
*/
scope.$on('show-results', function(event, args) {
scope.setData(args);
});
/*
Set question data
*/
scope.setData = function (args) {
console.log(args);
scope.questions = args;
scope.tableParams = new NgTableParams({}, { dataset: args});
};
}
}
}]);
Console.logging args
дает:
Можете ли вы включить часть, в которой вы создаете таблицу в своем контроллере? –
@AlonEitan см. Выше, это директива – Growler