从 angular 数据表过滤后,空值不会再次显示

Empty values do not show up again after filtering from angular datatable

我在 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,而是得到了非空 phone 数字的 3:

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

phone 为空的号码没有出现。

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

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

添加一个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

由于缺少 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>