2016-04-10 230 views
0

我正在使用Angular ng-table進行測試準備平臺過濾。我在數據庫中存儲每個問題的測驗結果爲0 or 1,但需要將它們顯示爲CorrectIncorrect給用戶。添加條件過濾器

我能夠與{{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給出:

enter image description here

+0

你可以在你的控制器中包含你創建表的部分嗎? –

+0

@AlonEitan見上面,這是一個指令 – Growler

回答

0

該模塊的文檔是非常糟糕的,我這是怎麼排序和過濾表

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

而且你需要設置使用filter="{ result: 'text'}過濾器,同時還注入$filter到你的指令。