Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何根据用户输入在阵列中进行隔离?_Javascript_Angularjs - Fatal编程技术网

Javascript 如何根据用户输入在阵列中进行隔离?

Javascript 如何根据用户输入在阵列中进行隔离?,javascript,angularjs,Javascript,Angularjs,我有用户列表,还有下拉列表和筛选用户。 当页面加载SearchData为空时,ng repeat将显示所有数据。当用户输入subjectn时,我们需要筛选用户数据如何才能做到这一点 下面我已经添加了我的代码,有人在这方面帮助我 var myApp=angular.module('sandbox',['ngMaterial']); myApp.controller('myCtrl',函数($scope){ $scope.subjects=[{ “姓名”:“泰米尔”, “值”:“TAM” }, {

我有用户列表,还有下拉列表和筛选用户。 当页面加载
SearchData
为空时,ng repeat将显示所有数据。当用户输入subjectn时,我们需要筛选用户数据如何才能做到这一点

下面我已经添加了我的代码,有人在这方面帮助我

var myApp=angular.module('sandbox',['ngMaterial']);
myApp.controller('myCtrl',函数($scope){
$scope.subjects=[{
“姓名”:“泰米尔”,
“值”:“TAM”
},
{
“名称”:“英语”,
“值”:“ENG”
},
{
“名称”:“科学”,
“值”:“SCI”
}
]
$scope.sclass=['a','b','c','d']
});

>
{{user.id}{{user.userclass}{{{user.name}}

快速ES6的一般方法是(只发布过滤功能,这是最主要的)

初始化控制器时,可以设置:

$scope.filteredUsers = $scope.users;
要确保显示未筛选列表,请执行以下操作:

现在可以将
$scope.filteredUsers
绑定到视图,而不是
$scope.users

您保留了
$scope.users
,因此您始终可以从中筛选完整的数据集:)

简而言之,我已经应用了级联过滤器: 如果设置了某个filterData属性,则该属性将进行筛选;如果未设置,则返回上一个筛选的属性。 通过这种方式,您可以应用更多的筛选器,并且始终按1筛选属性,这样更易于阅读,并且在某个筛选器中没有设置任何内容的情况下,它将跳过筛选

如果你想完全按照AngularJS的方式来做,你应该使用这里描述的方法(我不喜欢它,因为它更多的是代码,更不清楚它是如何工作的):

编辑:我根据你的命名做了一些假设,比如
主题
应该是
主题
,如果可能有多个,等等,下面是一个更新的答案和一个有用的提琴:


如果你对更一般的方式感兴趣,你应该检查我对这个问题的回答:

哦,这些是多项选择,我错过了索引。我会改进你的小提琴;)@科马尔:在第一个答案中,我跳过了一些细节(比如过滤器中有多项选择)。现在,即使未设置某些过滤器,它也适用于所有过滤器。这一点很重要,因为假设每个学生的id都是唯一的,那么您的第一个过滤器(按id)会否定所有其他过滤器。另外,您可以将它从field改为type=“number”以只允许数字(或者如果您不喜欢它附带的附加UI,可以使用一个带有regex check的函数来从中清除所有非numeric),我在答案的最后做了一个链接。这里又是:我改进了你的,请看url中的数字4:)@komal你是对的,这是因为当你取消选择所有内容时,一旦初始化数组仍然保持数组,不会消失。这是该链接上的改进版本fiddle,我已经更新了代码,使其更具可读性:)你意识到他标记AngularJS不是Angular吗?@Dantehesmith你意识到我的解决方案独立于任何框架吗?我明白了,链接的名称让我犹豫,我的错误。
$scope.filteredUsers = $scope.users;