繁体   English   中英

如何在AngularJS select上过滤ng-options?

[英]How to filter ng-options on AngularJS select?

我有这样的事情

<select ng-model="person"
        ng-options="person.name for person in mv.people">

现在,人员数组具有一些我要隐藏的成员。 例:

{
   name: 'john',
   hide: true
}

我如何确保这些人没有被选拔?

您可以像使用ng-repeat一样应用filter

 angular.module('app', []) .controller('ctrl', ($scope) => { $scope.persons = [{ name: 'John', hide: true }, { name: 'Jane', hide: false }, { name: 'Jeff', hide: false }, { name: 'Jim', hide: true }]; }); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script> <div ng-app="app" ng-controller="ctrl"> <select ng-model="selectedPerson" ng-options="person as person.name for person in persons | filter:{hide: false}"> </select> </div> 

最简单的方法是像这样使用filter子句: ng-options="person.name for person in people | filter:{hide:'false'}" 将来,您还可以为数组创建自定义过滤器,并将其应用到ng-options子句中。 下面有一个有效的示例。

干杯!

 var app = angular.module("myApp", []); angular.module("myApp").controller("myController", function($scope) { $scope.people = [{ "name": "john 1", "hide": false }, { "name": "john hidden", "hide": true }, { "name": "john 2", "hide": false }] }); angular.module("myApp").filter('hidden', [function() { return function (object) { var array = []; angular.forEach(object, function (person) { if (!person.hide) array.push(person); }); return array; }; }]); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script> <div ng-app="myApp" ng-controller="myController"> <select ng-model="person2" ng-options="person.name for person in people | filter:{hide: false}"></select> <select ng-model="person2" ng-options="person.name for person in people | hidden"></select> </div> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM