javascript - Angularjs 过滤器不适用于来自 ng-if 条件的值

标签 javascript angularjs filter

我正在使用 angularjs 搜索框 ng-model使用它作为我渲染的表的搜索值。

<input type="text" class="form-control" ng-model="transSearch">

这是我的表格代码

<tbody>
    <tr dir-paginate="item in transactions | filter: transSearch | itemsPerPage: pageSize" current-page="currentPage" data-pending-success="item.status">
        <td><div class="checkbox"><label><!--<input type="checkbox" ng-checked="allCheck">--> {{item.txn_id}}</label></div></td>
         <td>{{item.client_txn_id}}</td>
         <td>{{item.name}}</td>
         <td>{{item.phone_no}}</td>
         <td>{{item.datetime | date:'yyyy-MM-dd HH:mm:ss'}}</td>
        <td>{{item.amount}}</td>
        <td>{{item.client_cut}}</td>
        <td><span ng-if="item.status=='1'">Success</span><span ng-if="item.status=='0'">Pending</span></td>
    </tr>
</tbody>

可以在最后的表格中看到<td>我正在使用ng-if根据我将获得的数据仅呈现一个值,但这给我的过滤器带来了问题。我的查找器适用于所有字段,但是当我尝试过滤最后一个单元格内容时,它不起作用。

让过滤器对使用 ng-if 渲染的元素起作用,我缺少什么

最佳答案

模型将在 ng-if 中销毁,您可以使用 ng-show 或者下面还有一个解决方案..

您可以向与您设置 ng-if 的元素相同的元素添加另一个指令,这会从 $destroy 的范围中删除该属性:

指令

myModule.directive('destroyY', function(){
  return function(scope, elem, attrs) {
    scope.$on('$destroy', function(){
      if(scope.form.y) delete scope.form.y;
    }) 
  }
});

查看

<input ... data-ng-if="form.x>5" destroy-y .../>

DEMO

关于javascript - Angularjs 过滤器不适用于来自 ng-if 条件的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40020923/

相关文章:

javascript - 子级继承父级所有属性的方式

javascript - 支持 StreamSaver.js 的 AngularJS

javascript - 摊牌 Markdown 编辑器 : How to resize images to fit in with the content?

javascript - 使用 $scope 变量的值来指定属性

javascript - 如何在对象数组中找到最长长度的数组?

Javascript Date() 初始化格式错误

javascript - Angular : calling transclude directive function from within the transcluded component

java - 获取过滤器类中的 Autowired 服务

c# - 使用 ValidateAntiForgeryToken 自定义授权过滤器订单执行

javascript - 简单的 javascript 不起作用 - 令人沮丧!