我有这样的对象数组:
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
Array 元素。例如,当我输入“Audi”时,我得到了整个“Audi object”,尽管我想要单独的汽车生产商和/或与里面的模式匹配的汽车模型的结果<input>
。
我希望搜索工作,当我输入“Au”时,我会在第一个列表中看到“Audi”,在第二个列表中看到“Auris”。因此,搜索应该与 forcars.carMake
一样有效,cars.models[]
并在两个列表中显示结果(汽车生产商的第一/左和汽车模型的第二/右)。