2014-03-28 35 views
0

我想重置已过滤的库存数组,因此它会在点击<option value="">Barcodes</option>时显示所有库存。到目前为止,当我选择一个条形码,之后它只显示过滤的数据。以angularjs重置已过滤的数据

$scope.filter = function(barcode) { 
     var filtered = []; 
     for(var i = 0; i < $scope.inventories.length; i++){ 
      if($scope.inventories[i].barcode == barcode){ 
       filtered.push($scope.inventories[i]); 
      } 
     } 
     $scope.inventories = filtered; 
    }; 

    <select ng-model="inventory.barcode" ng-change="filter(inventory.barcode)"> 
     <option value="">Barcodes</option> 
     <option ng-repeat="inventory in inventories" value="{{inventory.barcode}}">{{inventory.barcode}}</div> 
    </select> 
+1

应用过滤功能时,您将要覆盖所有的库存NG-选项使用,为您更换带过滤数组的$ scope.inventories数组。看看角度过滤器的功能,特别是这个例子:http://docs.angularjs.org/api/ng/filter/filter – Capricorn

回答

0

可以使用filter

$scope.barcode = ""; 
$scope.conditionalFilter = function(item){ 
    if ($scope.barcode !== "") { 
    return item.barcode === $scope.barcode; // return items only if barcode is selected 
    } else { 
    return true; // return all items 
    } 
}; 

ng-repeat内直接过滤器和你的HTML将变为

<select ng-model="barcode"> 
     <option value="">Barcodes</option> 
     <option ng-repeat="inventory in inventories | filter:conditionalFilter" value="{{inventory.barcode}}">{{inventory.barcode}}</option> 
    </select> 

但实际上你不应该改变自己的元素的值使用ng-model

+0

它的alredy过滤选择,但我需要重置过滤器,所以当我点击条形码再次显示所有条形码 – Erick

+0

好的,只需一秒钟,将编辑答案 – pocesar

0

我不确定你想要什么实现。但看看angularjs filter这将为您过滤。 建议使用ng-options而不是使用ng-repeat。

我使用过滤器和ng选项创建了一个样本fiddle

<div ng-repeat="inventory in inventories| filter : barcode track by $index"> 
    {{inventory.barcode}} 
</div> 

可以“按曲目”为获取inventory.barcode在期权“价值”

<option value=""></option> 

<select ng-model="barcode" ng-options="inventory.barcode for inventory in inventories track by inventory.barcode"> 
    <option value="">Barcodes</option>  
</select> 
+0

好的,我会在工作中检查它,并尽快给出反馈意见 – Erick