【问题标题】:How to put If condition in array for data table in JavaScript?如何将 If 条件放入 JavaScript 中数据表的数组中?
【发布时间】:2017-11-29 06:56:52
【问题描述】:

我正在实现数据表,该表包含一个 API 命中的所有行。我想把条件放在java脚本代码中。通过 java 脚本创建数据表。我正在分享我的代码示例。

$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
        },
    }

我想将 if 条件放在第二个和第三个 DtColumnBuilder 中。如果 eta 应该打印或 etd。

我是数据表的新手。我该如何设置条件。

DTColumnBuilder.newColumn('eta').renderWith(dataRendererETA).withOption('defaultContent', '-'), DTColumnBuilder.newColumn('etd').renderWith(dataRendererETA).withOption('defaultContent', '-'),

我想一次显示一个。

【问题讨论】:

  • if 语句有什么问题?如果需要,您可以使用 unshift 将元素推送到数组的前面,或者将它们推送到数组的末尾并使用 if 有条件地执行此操作...不清楚问题的真正含义。
  • if 是什么?我的意思是确切的条件是什么?它是在运行时以某种方式发生变化的动态范围值吗?

标签: javascript angularjs datatables angular-datatables


【解决方案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', '-') )
}

或者您可以根据条件使用dtInstance 创建并隐藏/显示其中一列,例如在$watch 中:

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

【讨论】:

  • 感谢您的回答。此数据表仅显示 1000 条记录。如果在我的 api 中有超过 1000 条记录,那么它将显示现在的数据。如何在表中实现超过 1000 条记录。
  • ??? DataTables 中的行数没有限制,也许您在服务器端或R 服务中有一些限制。我真的无能为力。
  • 我在单页应用程序中使用。 MongoDB使用。那我该怎么办?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-02
  • 1970-01-01
  • 1970-01-01
  • 2014-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多