2014-03-28 58 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