0

私はそのようなオブジェクトの配列を持っています:

var cars = [  
   {  
      "carMake":"Audi",
      "models":[  
         "A4",
         "A6",
         "R8"
      ]
   },
   {  
      "carMake":"BMW",
      "models":[  
         "3er",
         "X3",
         "i8",
         "7er"
      ]
   },
   {  
      "carMake":"Toyota",
      "models":[  
         "Corolla",
         "Auris",
         "Yaris",
         "Gt86",
         "Rav4"
      ]
   }
];

そして、検索用に以下のAngularJSコードを試しました:

$scope.searching = '';
$scope.producers = [];
$scope.models = [];

$scope.searchCar = function() {
  $scope.producers = $filter('filter')(cars, function(value) {
    return value.carMake === $scope.searching;
  });
  $scope.models = $filter('filter')(cars, function(value) {
    return angular.forEach(value.models, function(model) {
      return model === $scope.searching;
    });
  });
};

HTML内には次のものがあります:

<label>What do you want to find?
  <input type="text" ng-model="searching" ng-change="searchCar()" placeholder="Search...">
</label>
<ul>
  <li ng-repeat="producer in producers">{{producer}}</li>
</ul>
<ul>
  <li ng-repeat="model in models">{{model}}</li>
</ul>

コードが期待どおりに動作しませんcars。配列要素全体しか出力しません。たとえば、「Audi」と入力すると、「Audi オブジェクト」全体が得られますが、車の生産者や車のモデルの結果を個別に取得したいのですが、内部のパターンに一致します<input>

「Au」と入力すると、最初のリストに「Audi」が表示され、2 番目のリストに「Auris」が表示されるように、検索が機能するようにします。したがって、検索は両方のリスト (自動車メーカーの場合は最初/左、自動車モデルの場合は 2 番目/右) と同様に機能cars.carMakeし、結果を提示する必要があります。cars.models[]

4

1 に答える 1