#html #angularjs #json
#HTML #angularjs #json
Вопрос:
Если элемент соответствует фильтру элементов массива, результат имеет приведенную ниже структуру json
[{"id": "1", "name":"product1","items": ["item1","item2"],},
{"id": "2", "name":"product2","items": ["item4","item3"],},
{"id": "3", "name":"product3","items": ["item5","item1"],}]
Требование заключается в том, что если я выбираю item1 из выпадающего списка, мне нужно отфильтровать весь объект, содержащий item1.
Я новичок в angular js, может ли кто-нибудь мне помочь
Ответ №1:
Используйте filter
в ng-repeat
через текстовое поле
Search by item: <input type="text" ng-model="search.items">
<div ng-repeat="product in data | filter:search">
{{product}}
</div>
через выпадающий список
<select class="form-control" ng-model="selectedThana" ng-options="t.items for t in data">
<option value="">Select</option>
</select>
<div ng-repeat="product in data | filter:selectedThana">
{{product}}
</div>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.data = [{"id": "1", "name":"product1","items": ["item1","item2"],},
{"id": "2", "name":"product2","items": ["item4","item3"],},
{"id": "3", "name":"product3","items": ["item5","item1"],}];
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body ng-app="myApp" ng-controller="myCtrl">
<select class="form-control" ng-model="selectedThana" ng-options="t.items for t in data">
<option value="">Select</option>
</select>
<div ng-repeat="product in data | filter:selectedThana">
{{product}}
</div>
</body>
Комментарии:
1. Спасибо. в выпадающем списке у меня будут item1, itme2, itm3, если выбрать элемент один
2. {«id»: «1», «name»: «product1», «items»: [«item1», «item2»]} {«id»: «3», «name»: «product3», «items»:[«item5», «item1»]} эти два arrys должны быть выбраны
Ответ №2:
Вы можете сделать это с помощью $filter,
HTML
<select ng-model="user" ng-change="getselected(user)" ng-options="code.name as code.name for code in optionsdownload">
</select>
Контроллер
$scope.getselected = function(item){
$scope.wholeobj = $filter("filter")($scope.optionsdownload, item);
}