2017-09-05 110 views
1

我有一個數組,並且此數組包含一些Id。 我想根據Id的過濾結果。根據數組值的AngularJS過濾字段

例如,請參閱下面的代碼片段。 如何顯示位於'ids'數組中的'StatusId'記錄? 根據我的例子,我只想列出:

AAA BBB CCC

<html> 
 

 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<script> 
 
    angular.module('myApp', []).controller('ctrl', function ($scope) { 
 

 
     $scope.ids = [{ 
 
      "id": 1 
 
     }, { 
 
      "id": 2 
 
     }, { 
 
      "id": 3 
 
     }] 
 

 
     $scope.records = [ 
 
      { 
 
       "Name": "AAA", 
 
       "StatusId": 1 
 
      }, 
 
      { 
 
       "Name": "BBB", 
 
       "StatusId": 1 
 
      }, 
 
      { 
 
       "Name": "CCC", 
 
       "StatusId": 2 
 
      }, 
 
      { 
 
       "Name": "DDD", 
 
       "StatusId": 4 
 
      }, 
 
      { 
 
       "Name": "EEE", 
 
       "StatusId": 4 
 
      }, 
 
] 
 

 

 
    }); 
 
</script> 
 

 

 
<body> 
 
    <div id="idctrl" ng-app="myApp" ng-controller="ctrl"> 
 
     <ul> 
 
      <li ng-repeat="x in records"> 
 
       {{ x.Name }} 
 
      </li> 
 
     </ul> 
 
    </div> 
 
</body> 
 

 
</html>

+0

您應該創建一個自定義過濾器。看看這個答案。 [https://stackoverflow.com/a/15869436/5358917](https://stackoverflow.com/a/15869436/5358917) – KKK

回答

1

您可以使用JavaScript '過濾器' 功能:

records = $scope.records.filter((record) => { 
    return record.StatusId === 1 
}); 

這將返回一個只包含帶有S的記錄的新數組tatusId是1.你可以使用這個更新的數組來顯示你想要的記錄。

+0

對不起,我不清楚。我已經將你的函數添加到我的代碼中,但結果沒有改變。 – Grcn

+0

@Grcn數組有一個過濾函數,它將_function_作爲輸入,它應該返回true或false。它通過提供的函數傳遞數組的每個元素,並返回返回true的元素的_new_數組。 [在這裏閱讀](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter)。 –

+0

只是一個參考,如果你正在使用箭頭函數,並且函數_just_返回一個值,你可以這樣寫:'(record)=> record.StatusId === 1'(或者'record => record.StatusId === 1',因爲只有一個參數) –