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

Javascript 如何获取角度数据表中的搜索框值?,javascript,angularjs,search,angular-datatables,Javascript,Angularjs,Search,Angular Datatables,我正在使用,我想获得生成的datatable附带的搜索框的值。Angular datatable有几个用于创建datatable,但它们中的任何一个都允许我指定属性或一些我可以观察以获得特定值的内容 因为我需要获取数据表输入搜索的值,所以我找不到实现我的目的的方法 那么,如何获取角度数据表中的搜索框值呢?不幸的是,您不能$watch搜索词/过滤器。Angular dataTables是使jQuery dataTables能够在Angular中运行的指令,没有DOM冲突等,但其内部仍然像往常一样工

我正在使用,我想获得生成的datatable附带的搜索框的值。Angular datatable有几个用于创建datatable,但它们中的任何一个都允许我指定属性或一些我可以观察以获得特定值的内容

因为我需要获取数据表输入搜索的值,所以我找不到实现我的目的的方法


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

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

但是,每次执行搜索/筛选时,dataTables都会广播一个
搜索
.dt
)事件,然后您可以直接从DOM中提取搜索值:

angular.element('body').on('search.dt',function(){
var searchTerm=document.querySelector('.dataTables\u filter input')。值;
log('dataTables search:'+searchTerm);
})
这当然是最简单的类似jQuery的方法。页面上可能有多个dataTable,并且希望为每次搜索提取更详细的信息,然后可以在angular应用程序中使用:

angular.element('body').on('search.dt',函数(e,api){
如果(!$scope.$$phase){
$scope.$apply(函数(){
$scope.searchTerm=api.oPreviousSearch;
$scope.searchTerm.table=e.target.id;
})   
}  
})
$apply
以便从事件处理程序内部更新
$scope
oPreviousSearch
实际上是当前搜索,因此上面在表单上生成一个
$watch
'able
searchTerm

{
“BCA不敏感”:正确,
“sSearch”:“test”,
“bRegex”:错,
“bSmart”:没错,
“_匈牙利地图”:{
“不区分大小写”:“不区分大小写”,
“搜索”:“搜索”,
“regex”:“bRegex”,
“智能”:“bSmart”
},
“表”:“表ID”
}

请参见演示->

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

要更新它,请确保:

具有dtInstance和dtOptions对象:

<table datatable dt-instance="vm.dtInstance" dt-options="vm.dtOptions">
然后在功能中,您可以执行以下操作:

this.myCallbackFunction = () => {
   let mySearchValue = this.dtInstance.DataTable.search() 
}

回答得好!非常感谢你!我喜欢这个答案,因为它不需要jquery
this.myCallbackFunction = () => {
   let mySearchValue = this.dtInstance.DataTable.search() 
}