Javascript 如何使用angularjs为ng重复列表创建复选框过滤器?

Javascript 如何使用angularjs为ng重复列表创建复选框过滤器?,javascript,angularjs,angularjs-ng-repeat,Javascript,Angularjs,Angularjs Ng Repeat,我正在尝试为ng重复列表创建复选框。我面临一些问题 HTML <input type="text" ng-model="findname" placeholder="Search Name" /> <ul> <li class="no-decoration" ng-repeat="tech in technologyArray"> <label> <input type="checkbox" ng-model

我正在尝试为ng重复列表创建复选框。我面临一些问题

HTML

<input type="text" ng-model="findname" placeholder="Search Name"  />
<ul>
    <li class="no-decoration" ng-repeat="tech in technologyArray">
    <label>
        <input type="checkbox" ng-model="tech.on" />{{tech.u_proffession}}
    </label>
    {{tech.on}}
    </li>
</ul>
<ul>
    <li  ng-repeat="stu in students  | filter:findname | filter:myFunc ">                
        <strong>Name :{{stu.u_name}}</strong><br />
    </li>
</ul>
JSON数组

{"records":[{"u_name":"adrian","u_mail":"abc@gmail.net","u_proffession":"developer"},{...}]}
1000行

当我删除ng列表中的复选框过滤器时,简单搜索
ng model=“findname”
工作正常。但是,当我在
ng列表
中添加这两个数据时,
student
列表中没有显示任何数据,文本搜索也不起作用。我想两者都用


谁能告诉我哪里错了,我可以解决我的问题。如果有人指导我,我将不胜感激。谢谢。

我绝对不喜欢在控制器中加入过滤功能。因此,我建议编写一个实际的过滤器

angular.module('app',[])
.controller('ctrl',函数($scope){
$scope.technologyArray=[{
u_profession:“开发者”,
关于:错
}, {
教授:“司机”,
关于:错
}];
$scope.students=[{
“你的名字”:“阿德里安”,
“u_邮件”:abc@gmail.net",
“u_profession”:“开发商”
}, {
“你的名字”:“亚当”,
“u_邮件”:def@gmail.net",
“司机”:“司机”
}, {
“u_name”:“alex”,
“u_邮件”:ghi@gmail.net",
“u_profession”:“开发商”
}, {
“你的名字”:“艾伦”,
“u_邮件”:jkl@gmail.net",
“司机”:“司机”
}];
})
.filter('customFilter',function(){
返回功能(输入、技术){
如果(!techs | | techs.length==0)返回输入;
var out=[];
角度forEach(输入、功能(项目){
角度。forEach(技术,功能(技术){
如果(项目价格===技术价格){
推出(项目);
}
});
});
返回;
}
});

  • {{tech.u_profession}
  • 名称:{{stu.u_Name}({{stu.u_profession})

我绝对不喜欢在控制器中加入过滤功能。因此,我建议编写一个实际的过滤器

angular.module('app',[])
.controller('ctrl',函数($scope){
$scope.technologyArray=[{
u_profession:“开发者”,
关于:错
}, {
教授:“司机”,
关于:错
}];
$scope.students=[{
“你的名字”:“阿德里安”,
“u_邮件”:abc@gmail.net",
“u_profession”:“开发商”
}, {
“你的名字”:“亚当”,
“u_邮件”:def@gmail.net",
“司机”:“司机”
}, {
“u_name”:“alex”,
“u_邮件”:ghi@gmail.net",
“u_profession”:“开发商”
}, {
“你的名字”:“艾伦”,
“u_邮件”:jkl@gmail.net",
“司机”:“司机”
}];
})
.filter('customFilter',function(){
返回功能(输入、技术){
如果(!techs | | techs.length==0)返回输入;
var out=[];
角度forEach(输入、功能(项目){
角度。forEach(技术,功能(技术){
如果(项目价格===技术价格){
推出(项目);
}
});
});
返回;
}
});

  • {{tech.u_profession}
  • 名称:{{stu.u_Name}({{stu.u_profession})

filter:myFunc是一个函数,它不应该像这样filter:myFunc()?filter:myFunc是一个函数,它不应该像这样filter:myFunc()?它工作得很好,因为我只需要一件事,我想要求当前数据只在我按复选框筛选时显示,否则没有显示。那么,是否可以在页面加载时显示所有数据。我更新了代码段。要显示页面加载上的所有项目,只需在默认情况下选中复选框。现在它只显示筛选的记录,我询问的是所有记录,搜索筛选也不起作用。我想显示页面加载上的所有记录,我可以从记录中筛选数据,其他页面将为空。我不确定我是否理解,但我修改了过滤器的工作方式。只有选中的复选框才会传递到自定义筛选器。如果未通过任何复选框,则自定义筛选器不会过滤任何内容。当我运行代码段时,搜索筛选器工作正常,因此我不确定为什么在运行代码段时它不工作。它工作正常,因为我只需要一件事,即仅当我按复选框筛选时才显示当前数据,否则不显示任何内容。那么,是否可以在页面加载时显示所有数据。我更新了代码段。要显示页面加载上的所有项目,只需在默认情况下选中复选框。现在它只显示筛选的记录,我询问的是所有记录,搜索筛选也不起作用。我想显示页面加载上的所有记录,我可以从记录中筛选数据,其他页面将为空。我不确定我是否理解,但我修改了过滤器的工作方式。只有选中的复选框才会传递到自定义筛选器。如果未通过任何复选框,则自定义筛选器不会过滤任何内容。当我运行代码段时,搜索过滤器工作正常,因此我不确定为什么在运行代码段时它不工作。
{"records":[{"u_name":"adrian","u_mail":"abc@gmail.net","u_proffession":"developer"},{...}]}