2017-11-29 17 views
1

私はこのテーブルに1つのAPIヒットを持つすべての行を含むdatatableを実装しています。そして、私は条件をJavaスクリプトコードに入れたいと思います。 Javaスクリプトを介して作成されたデータテーブル。コードサンプルを共有しています。JavaScriptのデータテーブルの配列に条件がある場合はどうすればいいですか?

$scope.standardOptions = DTOptionsBuilder 
    .fromFnPromise(R.all('----api call--').getList()) 
    .withDOM("<'dt-toolbar'<'col-xs-12 col-sm-6'f><'col-sm-6 col-xs-12 hidden-xs'l>r>" + 
    "t" + 
    "<'dt-toolbar-footer'<'col-sm-6 col-xs-12 hidden-xs'i><'col-xs-12 col-sm-6'p>>") 
    .withBootstrap(); 

$scope.standardColumns = [    
    DTColumnBuilder.newColumn('flightNo').withOption('defaultContent', '-'), 
    DTColumnBuilder.newColumn('eta').renderWith(dataRendererETA).withOption('defaultContent', '-'), 
    DTColumnBuilder.newColumn('etd').renderWith(dataRendererETA).withOption('defaultContent', '-'),   
]; 

APIコールデータは

{ 
    "_id": "101-87450458_2016_SEP", 
    "flightNo": "087", 
    "eta": { 
      "$date": 1511868720000 
      }, 
    "etd": { 
     "$date": 1511875800000 
     }, 
    } 

Iは、第2、第3のDtColumnBuilderであれば条件を載せていきたいと思います。いずれかのetaが印刷するか、etdしなければならない。

私はdatatablesで新しいです。どのように私は条件を置くことができます。

DTColumnBuilder.newColumn( 'ETA')renderWith(dataRendererETA).withOption( 'defaultContent' ' - ')、 DTColumnBuilder.newColumn( 'ETD')renderWith(dataRendererETA).withOption(」。 defaultContent '、 ' - ')、

私は一度に1つずつ表示したいです。

$scope.standardColumns = [    
    DTColumnBuilder.newColumn('flightNo').withOption('defaultContent', '-') 
] 
if (condition) { 
    $scope.standardColumns.push(DTColumnBuilder.newColumn('eta').renderWith(dataRendererETA).withOption('defaultContent', '-')) 
} else { 
    $scope.standardColumns.push(DTColumnBuilder.newColumn('etd').renderWith(dataRendererETA).withOption('defaultContent', '-')) 
} 

か、$watch、例えば、両方を作成し、表示/非条件に基づいてdtInstanceを使用して列のいずれかを表示することができます:

enter image description here

+0

if文の何が問題になっていますか?配列の最後に要素を配置する必要がある場合や配置する場合は、シフトを使用して配列の先頭に要素を押し込み、条件を使用してifを使用して、問題の内容を明確にしないでください。 – shaunhusain

+0

'if'とは何ですか?つまり、条件は正確です。実行時に何とか変更されるダイナミックなスコープ値ですか? – davidkonrad

答えて

1

あなたは初期化時にそれを行うことができ

$scope.$watch(‘condition’, function(newVal, oldVal) { 
    if (newVal) { 
    $scope.dtInstance.DataTable.column(1).visible(true) 
    $scope.dtInstance.DataTable.column(2).visible(false) 
    } else { 
    $scope.dtInstance.DataTable.column(1).visible(false) 
    $scope.dtInstance.DataTable.column(2).visible(true) 
    } 
}); 
+0

答えをありがとう。このデータテーブルは1000レコードしか表示しません。私のAPIの中に1000以上のレコードがあれば、今度はデータが表示されます。どのようにしてテーブルで1000以上のレコードを達成できますか? –

+0

???行数にはDataTablesに制限はありません。おそらくserversideや 'R'サービスにいくつかの制限があります。私は本当にそれを助けることができません。 – davidkonrad

+0

私はシングルページアプリケーションで使用しています。 mongodbを使って。じゃあどうすればいい? –

関連する問題