javascript - 如何在数据表 Angular 中基于 JSON 动态填充表值?

标签 javascript jquery angularjs datatables angular-datatables

我正在使用 Angular-Datatables .我需要能够根据返回的数据动态创建表。换句话说,我不想指定列标题。

示例:

json数据:

[
 {
  "id": "2",
  "city": "Baltimore",
  "state": "MD",
 },
 {
  "id": "5",
  "city": "Boston",
  "state": "MA",
 },
 {
  "id": "8",
  "city": "Malvern",
  "state": "PA",
 },
]

列标题:

身份证、城市、州

有人可以帮忙吗?

最佳答案

这真是个好问题!对于传统的 jQuery 数据表,这不是问题,但我们有一种不同类型的声明式设置,带有 Angular 数据表,这使得分离各种任务变得更加困难。我们可以用 fromFnPromise 来延迟数据的填充。 ,但不会阻止 dataTable 在我们需要之前被实例化。我想我找到了一个可靠的解决方案:

首先,为避免即时初始化,请删除 datatable标记中的指令并给出 <table>一个id相反,即:

<table id="example" dt-options="dtOptions" dt-columns="dtColumns" />

然后加载数据资源,构建dtColumnsdtOptions最后注入(inject) datatable属性和 $compile <table>使用 id :

$http({
  url: 'data.json'
}).success(function(data) {
  var sample = data[0], dtColumns = []

  //create columns based on first row in dataset
  for (var key in sample) dtColumns.push(
    DTColumnBuilder.newColumn(key).withTitle(key)
  )
  $scope.dtColumns = dtColumns

  //create options
  $scope.dtOptions = DTOptionsBuilder.newOptions()
    .withOption('data', data)
    .withOption('dataSrc', '')

  //initialize the dataTable
  angular.element('#example').attr('datatable', '')
  $compile(angular.element('#example'))($scope)
})

这应该适用于任何“对象数组”资源
演示 -> http://plnkr.co/edit/TzBaaZ2Msd9WchfLDLkN?p=preview


注意:已经清理了示例 JSON,我猜这是一个示例,并不意味着要使用尾随逗号。

关于javascript - 如何在数据表 Angular 中基于 JSON 动态填充表值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38788383/

相关文章:

javascript - Expo - 在 Android 8.1.0 上重新安装 App 后访问 Keystore 时出错

javascript - 显示和隐藏具有多个类名的 div jquery 复选框

javascript - 需要减少表格宽度

jquery - iPhone (jQuery) 的高度错误?

angularjs - 使输入反写

javascript - 是否可以反转 SVG 的裁剪?

javascript - postMessage 网络 worker 内存泄漏

javascript - 如何使用 Javascript 关键字作为变量名?

javascript - 未调用 AngularJS 服务

javascript - 为什么以及何时使用 angular.copy? (深拷贝)