2016-04-10 18 views
0

Angular ng-table kullanıyorum, bir test hazırlığı platformu için filtreleme ile. DB'de soru başına 0 or 1 olarak sınav sonuçlarını saklıyorum ancak kullanıcıya Correct veya Incorrect olarak göstermem gerekiyor., filtre eklemek için şart koşulu ekle

Ben {{q.result == 1 ? 'Correct' : 'Incorrect'}}

ile bunu yapabilmek duyuyorum Ama aynı zamanda ihtiyacı olan bu filtreleme, anlam uygulanacak, kullanıcı "Doğru" yazıp q.result = 1.

ile tüm soruları filtrelemek mümkün olmalıdır
<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> 

Yukarıdaki üçüncül kurallara uymak için filter="{ result: 'text'} değiştirmeyi denedim, ancak çalışmaz.

filter="{(result == 1 ? 'Correct' : 'Incorrect') : 'text'}" verir hatası:

Syntax Error: Token '(' invalid key at column 2 of the expression [{(result == 1 ? 'Correct' : 'Incorrect') : 'text'}] starting at [(result == 1 ? 'Correct' : 'Incorrect') : 'text'}]. 

Bir yönerge kullanıyorum:

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}); 
       }; 
      } 
     } 
}]); 

args Console.logging verir:

enter image description here

+0

Tabloyu oluşturduğunuz bölümü denetleyicinize ekleyebilir misiniz? –

+0

@AlonEitan yukarıya bakın, bu bir direktiftir – Growler

cevap

0

Bu modülün belgeleri bu ben sıralamak ve masa

scope.tableParams = new NgTableParams({}, { 
    total: args.length, 
    data: args, 
    getData: function ($defer, params) { 
     var orderedData = params.filter() ? $filter('filter')(scope.questions, params.filter()) : scope.questions; 
     orderedData = params.sorting() ? $filter('orderBy')(orderedData, params.orderBy()) : orderedData; 
     params.total(orderedData.length); 
     $defer.resolve(orderedData); 
    } 
}); 

filtrelemek Ve filter="{ result: 'text'} kullanarak Filtre ayarlamak ve ayrıca direktifi içine $filter enjekte etmek gerek nasıl, oldukça berbat olduğunu.