javascript - 基于angularjs中的过滤器从数组中删除元素

标签 javascript angularjs

如何根据过滤器从数组中删除元素,仅在“数量”为 0 且“isSelected”为假时删除那些索引?任何建议。这是我的代码:

<table data-ng-repeat="st in Absorb track by $index" data-ng-cloak data-ng-init="remove(st)">                                          
    <tr>
        <td>                                                    
            <input type="radio" name="groupName" data-ng-model ="st.isSelected" data-ng-checked="(st.isSelected == true)"/>
        </td>
        <td>                                                       
            <span>{{st.ProjectedQuantityOnHand}}</span>
        </td>
        <td style="display:none" data-ng-if="st.ProjectedQuantityOnHand == 0">                                                       
            <input type="number" data-ng-model="st.ProjectedQuantityOnHand" style="display:none">
        </td>
    </tr>
</table>

JS代码:

$scope.Absorb = [
    {"Name":"apple", ProjectedQuantityOnHand:"0", isSelected:true},
    {"Name":"mango", ProjectedQuantityOnHand:"0", isSelected:false}
    {"Name":"ball", ProjectedQuantityOnHand:"1", isSelected:false}
    {"Name":"football", ProjectedQuantityOnHand:"1", isSelected:false}
]

$scope.remove = function (item) {
     var availableqauantity = 0
     debugger
     angular.forEach($scope.StockList, function (i) {
        var FilteredProduct1 = $filter('filter')($scope.StockList, { isSelected: false, ProjectedQuantityOnHand: 0 });
        if (FilteredProduct1.length > 0) {
            availableqauantity = FilteredProduct1[0].ProjectedQuantityOnHand;
        if (availableqauantity == 0)
            $scope.StockList.splice(i,1);
        }
     });
}

最佳答案

<table data-ng-repeat="st in Absorb | filter:{isSelected: '!false', ProjectedQuantityOnHand: '!0'} track by $index" data-ng-cloak> 

这将仅显示那些 isSelected 不同于 false 且 ProjectedQuantityOnHand 不同于 0 的项目。不需要外部函数。

更新

https://plnkr.co/edit/gPz5pKSIOxZ6odSU3TfF?p=preview

检查这个例子。在这里,我制作了一个自定义过滤器,仅当 ProjectedQuantityOnHand 为 0 且 isSelected 为 false 时才隐藏项目。

app.filter('customFilter', function() {
  return function(values) {
    var filtderResult = [];
    angular.forEach(values, function(value) {
      if (value.isSelected || value.ProjectedQuantityOnHand !== 0) {
        filtderResult.push(value);
      }
    });
    return filtderResult;
  }
});

关于javascript - 基于angularjs中的过滤器从数组中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40242042/

相关文章:

javascript - 使用 JavaScript 进行 AWS DynamoDB 事务 : One or more parameter values were invalid

javascript - 带头认证的跨域文件上传

用于链接和链接类的 javascript 正则表达式

angularjs - Angular 2 Rc.1 路由器未加载 "/' 组件

javascript - 如何在指令之外传递 'scope' 参数

javascript - 如何通过 angularjs 服务正确重新连接到套接字?

javascript - 映射每个日期保存一个数组,实现问题

javascript - Angular : custom filter infinite digest

angularjs - 使用 karma 在 angular2 中运行测试时失败 : No provider for Reflector! 错误

javascript - 在 AngularJS 中使用 ng-repeat 调用和迭代函数返回值