从angular datatable过滤后,空值不会再次出现

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

我在angularjs中的数据表上按列过滤。我的datataset如下:

{name:'John', phone:'555-1276'},
{name:'Mary', phone:'800-BIG-MARY'},
{name:'Mike', phone:'555-4321'},
{name:'Johnny'}

当我基于Phone Number过滤时,让我们说“55”,我得到以下2个结果:

{name:'John', phone:'555-1276'},
{name:'Mike', phone:'555-4321'}

但是当我清除文本框时,我没有得到所有4个回复,而是获得3个非空电话号码:

{name:'John', phone:'555-1276'},
{name:'Mary', phone:'800-BIG-MARY'},
{name:'Mike', phone:'555-4321'}

具有空电话号码的电话号码不会显示。

整个代码可以在这里找到:https://plnkr.co/edit/1r2nGqOhXQSCSIrILY3Z?p=preview

附加信息:我甚至尝试使用控制器中的JS函数替换输入文本框中的空字符串。

angularjs angular-filters angular-datatables
2个回答
1
投票

这是因为没有phone属性,请尝试this solution

<tr ng-init='friendObj.phone = friendObj.phone || ""' ng-repeat="friendObj in friends | filter:search:strict">
    <td>{{friendObj.name}}</td>
    <td>{{friendObj.phone}}</td>
</tr>

1
投票

添加ng-change指令:

<label>Phone only 
   <input ng-model="search.phone"
          ng-change="searchChange()">
</label><br>

并在模型为空时删除该属性:

$scope.searchChange = function() {
    if (!$scope.search.phone) delete $scope.search.phone; 
}

DEMO on PLNKR

© www.soinside.com 2019 - 2024. All rights reserved.