Я делаю выпадающий список с полем ввода в angular.js, но безуспешно
Код, который я использую..
<div ng-app="" ng-controller="namesCtrl">
<h2>filter input</h2>
<input type="text" ng-model="test"/>
<ul>
<li ng-repeat="x in names | filter:test | orderBy : 'name'">
{{ x.name + ',' + x.country }}
</li>
</ul>
</div>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.firstName= "";
$scope.lastName= "";
});
</script>
<script src="namescontrol.js"></script>
2 ответа
Проверьте рабочую демонстрацию: JSFiddle.
Используйте настраиваемый фильтр для выполнения фильтрации. Поскольку ng-model
привязывается к значению key
. При каждом изменении ключа элементы
будут фильтроваться, а представление будет изменено.
angular.module('Joy',[])
.controller('JoyCtrl', ['$scope', function ($scope) {
$scope.items = ['one', 'two', 'three', 'four', 'five'];
$scope.key = '';
$scope.search = function (value) {
return value.indexOf($scope.key) >= 0;
}
}]);
HTML:
<div ng-app="Joy" ng-controller="JoyCtrl">
<input type="text" ng-model="key">
<div>
<li ng-repeat="item in (items | filter:search)" ng-bind="item"></li>
</div>
</div>
Обновление 1
Если вы хотите изначально скрыть список: JSFiddle:
$scope.search = function (value) {
return $scope.key !== '' && value.indexOf($scope.key) >= 0;
};
Обновление 2
Я разработал проект с открытым исходным кодом angular-sui
на основе Angular и Semantic-UI. Существует директива sui-select
, и это именно то, что вам нужно. Посмотрите демонстрацию.
Я думаю, что вы ищете функцию автозаполнения. AngularUI предлагает это через директиву Typeahead. https://angular-ui.github.io/bootstrap/#/typeahead
Вам нужно что-то вроде этого:
<input type="text" ng-model="test" typeahead="name for name in names"/>
Директива будет динамически генерировать список, поэтому вам не нужно создавать его самостоятельно.
Похожие вопросы
Новые вопросы
angularjs
Используйте для вопросов об AngularJS (1.x), JavaScript-фреймворке с открытым исходным кодом. НЕ используйте этот тег для Angular 2 или более поздних версий; вместо этого используйте тег [angular].