我试图实现实时搜索,所以我搜索包含许多输入字段 所以每次用户更新输入字段时都应该触发搜索功能。
我想出了$ watch来跟踪表单字段中的模型更改
$scope.$watch('filters.site', function () {
$scope.$broadcast('updateDataTable');
});
$scope.$watch('filters.fname', function () {
$scope.$broadcast('updateDataTable');
});
$scope.$watch('filters.lname', function () {
$scope.$broadcast('updateDataTable');
});
但是我只是想知道是否还有整体的表格价值变化
我的表单看起来像
<form name="searchForm">
<label for="">FIRST NAME</label>
<input type="text"
class="form-control"
data-ng-model="filters.fname">
<span></span>
<label for="">LAST NAME</label>
<input type="text"
class="form-control"
data-ng-model="filters.lname">
<span></span>
<label for="">SITE</label>
<input type="text"
class="form-control"
data-ng-model="filters.site">
<span></span>
</form>
感谢
答案 0 :(得分:3)
如果您将true
作为最后一个参数传递给$watch
,Angular将会监视深度相等,您可以立即观看整个对象:
$scope.$watch("filters", function() { ... }, true);
这将导致在每个摘要周期中创建对象的副本,但如果所有过滤器对象包含的是那些过滤器,那么它可能不会比单独观看所有内容更低效。如果由于某种原因你的过滤器对象复制起来很昂贵,你也可以使用$ watchGroup来获得当前代码的等效功能,除了neater:
$scope.$watchGroup(["filters.site", "filters.fname", ...], function() { ... });
答案 1 :(得分:0)
$scope.$watch('filters', function () {
$scope.$broadcast('updateDataTable');
});
答案 2 :(得分:0)
您可以使用可以调用搜索功能的ng-change指令将其添加到您的所有输入中,这样当其中一个输入更改时,将调用搜索功能。
<input type="text" class="form-control" data-ng-change="search()" data-ng-model="filters.fname">