从角度数据表过滤后,空值不再显示

时间:2019-04-25 05:29:06

标签: angularjs angular-filters angular-datatables

我正在按angularjs的数据表上的列进行过滤。我的数据集如下:

{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函数将输入文本框中的空字符串替换为null。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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>