【问题标题】:Datatables search, filter, and export with Firebase使用 Firebase 搜索、过滤和导出数据表
【发布时间】:2016-05-28 13:27:54
【问题描述】:

我有一个由 Angular 驱动的 CRUD 应用程序。最近我向它添加了数据表,以便使用数据表的功能来搜索、过滤、排序、导出和隐藏列。不幸的是,当我使用任何数据表功能(例如搜索)时,它会返回各个列中的 Firebase 引用 {{contact.name}} {{contact.email}}(还有 4 列),它会返回 Firebase 引用而不是字段。有没有办法解决这个问题?我真的需要这些数据表功能同时使用 Firebase。

$(document).ready(function() {
    $('#contacts').DataTable( {
        dom: 'Bfrtip',
        buttons: [
            'copyHtml5',
            'excelHtml5',
            'csvHtml5',
            'pdfHtml5'
        ]
    } );
} );
<table id="contacts" class="table table-striped table-hover" >
  <thead>
    <tr>
      <th>Name</th>
      <th>Phone</th>
      <th>Area</th>
      <th>Occupation</th>
      <th>E-mail</th>
	  <th> Actions </th>
    </tr>
  </thead>
  <tbody>
    <tr ng-repeat="contact in contacts">
      <td>{{contact.name}}</td>
      <td>{{contact.phone}}</td>
      <td>{{contact.area}}</td>
      <td>{{contact.work}}</td>
      <td>{{contact.email}}</td>
      <td><a href="#/edit/{{contact.$id}}" class="btn btn-raised btn-xs btn-warning">Edit</a> <a class="btn btn-raised btn-xs btn-danger" ng-click="removeContact(contact.$id)">Delete</a></td>

    </tr>
  </tbody>
</table>

编辑

将通过 ajax 获取数据来解决这个问题。这是我从 ajax GET 请求中得到的 json 格式

{"-KIZ6VnucsKbKjlaE8aq":{"area":"Parklands","email":"tttt","name":"Mohammed Sohail","phone":"+254711777734","work":"ttt"},"-KId6OC2gOwiacUid9yK":{"area":"dfgdfg","email":"dfgdf","name":"dfg","phone":"dfgdfg","work":"fdfffffff"},"-KId6Rqo0B6w0jACHhWM":{"area":"dfgdfgdfgdf","email":"dfgdfgdfgdfg","name":"dfgfdgdf","phone":"gdfgdfgdfg","work":"gdfgdfgdfgdfg"},"-KIqmYZubPYhAqDqEyWo":{"area":"dfgfdg","email":"fgfdgfdgdf","name":"fgfg","phone":"fdgdg","work":"fgdfgdf"},"-KIqn5QABMXrTGoVgQv1":{"area":"bla","email":"weadasda","name":"bla","phone":"bla","work":"bla"}}

这就是数据在控制台上的样子。

任何使用数据表的帮助都将得到应用。

FireBase database image

【问题讨论】:

  • 请在问题本身中发布相关代码。链接失效了,我们不应该通过 repo 来查找您的代码。问题应该是自包含的,因此我们不必离开现场来审查问题。问题陈述也不清楚。在没有适当的上下文和预期结果的情况下,不知道 “返回数组” 意味着什么请参阅:How to Ask
  • 好的将编辑它。我正在通过手机使用它。
  • 如何输入/编辑问题无关紧要。重要的是它符合站点指南,问题清晰,问题包含所有相关细节,包括问题代码
  • 我已经尽力了,如果可以的话,请帮忙。
  • 好的,一切都解决了。 P.S 如果可能,请撤消投票

标签: angularjs json firebase datatables angularfire


【解决方案1】:

所以,这个问题实际上是关于将具有未知对象条目名称(例如 KId6Rqo0B6w0jACHhWM)的对象的(firebase)JSON 对象转换为可以与 dataTables 和 ng-repeat 一起使用的更简单的结构?

您可以通过这种方式将contacts 格式化为一个普通对象数组:

$http.get('firebase.json').then(function(json) { //faked response from firebase
  $scope.contacts = []
  for (var item in json.data) {
    $scope.contacts.push(json.data[item]) 
  }
}) 

现在ng-repeat 将起作用,并且标记(或contacts 数据)对于数据表来说是可以理解的。要将其转换为 angular-datatables(jQuery dataTables 的角度指令),您唯一需要做的就是包含 datatables 依赖项并在标记中包含 datatable 指令:

<table datatable="ng" class="table table-striped table-hover" >

演示 -> http://plnkr.co/edit/tn9cuKa46vs4x8cHebjB?p=preview

【讨论】:

  • 完美运行,假设我想添加按钮?我可以打开引导样式,但不能打开按钮,文档有点偏离。你能快速告诉我plnkr上添加的按钮吗?我真的很感激。
  • 我只是想简化一切但使用选择和导出功能,即使这意味着绕过角度。有什么建议吗?
  • @MohammedSohail - 基本上与文档中的操作相同 -> l-lin.github.io/angular-datatables/#/withButtons 但您必须包括 jszippdfmake,以及 jszip 必须是 2.6.0 或以下,即 @ 987654336@.
猜你喜欢
  • 1970-01-01
  • 2019-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 2020-10-05
相关资源
最近更新 更多