如何获取角度数据表中的搜索框值?

问题描述 投票:3回答:2

我正在使用angular datatable plugin,我想获得生成的数据表附带的搜索框的值。 Angular数据表有一些options来创建数据表,但是它们中的任何一个都允许我指定属性或者我可以用来获取特定值的东西。

由于我需要获取数据表的输入搜索的值,我找不到实现目的的方法。

那么,如何在角度数据表中获取搜索框值?

javascript angularjs search angular-datatables
2个回答
4
投票

不幸的是,你不能$watch搜索词/过滤器。 Angular dataTables是一些指令,它使jQuery dataTables可以在没有DOM冲突的情况下以角度运行,但内部仍然可以像往常一样工作 - 以完全无角度的方式:)

但是,每次执行搜索/过滤时,dataTable都会广播search.dt)事件,然后您可以直接从DOM中提取搜索值:

angular.element('body').on('search.dt', function() {  
   var searchTerm = document.querySelector('.dataTables_filter input').value;
   console.log('dataTables search : ' + searchTerm); 
})

这当然是最简单的类jQuery方法。您可能在页面上有多个dataTable,并希望为每个搜索提取更详细的信息,然后您可以在角度应用中使用:

angular.element('body').on('search.dt', function(e, api) {  
   if (!$scope.$$phase) { 
      $scope.$apply(function() {
         $scope.searchTerm = api.oPreviousSearch;
         $scope.searchTerm.table = e.target.id;
      })   
   }  
})

$apply为了从事件处理程序内部更新$scopeoPreviousSearch实际上是目前的搜索,所以上面在表格上产生了$watch'able searchTerm

{
  "bCaseInsensitive": true,
  "sSearch": "test",
  "bRegex": false,
  "bSmart": true,
  "_hungarianMap": {
    "caseInsensitive": "bCaseInsensitive",
    "search": "sSearch",
    "regex": "bRegex",
    "smart": "bSmart"
  },
  "table": "tableId"
}

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


0
投票

您可以使用search()函数获取实际搜索值(不带参数)。

要更新它,请确保:

有一个dtInstance和一个dtOptions对象:

<table datatable dt-instance="vm.dtInstance" dt-options="vm.dtOptions">

您将回调绑定到dtOptions中的“draw”事件:

this.dtOptions = { drawCallback: this.myCallbackFunction }

然后在你的功能中你可以做到:

this.myCallbackFunction = () => {
   let mySearchValue = this.dtInstance.DataTable.search() 
}
© www.soinside.com 2019 - 2024. All rights reserved.