私はそのようなオブジェクトの配列を持っています:
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[]