AngularJS过滤器使用ng个重复复选框显示所有页面加载
AngularJS filter using ng-repeat checkboxes show all on page load
这篇文章类似于某人之前发布的帖子,但有不同的变体。我在筛选要在页面加载时加载所有产品的复选框时遇到问题,当我在technologyArray和/或technologyArray2中选中多个复选框时,它会显示与复选框名称匹配的所有产品。现在,我的复选框只是做一个AND条件,所以当我选中多个复选框时,我不会得到结果。这是我在JSFiddle中的代码。http://jsfiddle.net/missggnyc/9aL1hm4x/6/
HTML
<div ng-controller="MyCtrl">
<h1>Language 1</h1>
<div class="no-decoration" ng-repeat="tech in technologyArray">
<label><input type="checkbox" ng-model="tech.on" ng-change="checkChange()" />{{tech.name}}
</label>
</div><br>
<h1>Language 2</h1>
<div class="no-decoration" ng-repeat="tech2 in technologyArray2">
<label><input type="checkbox" ng-model="tech2.on" ng-change="checkChange2()" />{{tech2.name}}
</label>
</div>
<hr>
Results:
<div ng-repeat="portfolioItem in portfolioArray | filter:myFunc | filter:myFunc2" class="ng-scope">
<h3> {{portfolioItem.name}}</h3>
</div>
</div>
JS-
var myApp = angular.module('myApp', []);
function MyCtrl($scope) {
$scope.showAll = true;
$scope.checkChange = function() {
for(t in $scope.technologyArray){
if($scope.technologyArray[t].on){
$scope.showAll = false;
return;
}
}
$scope.showAll = true;
};
$scope.myFunc = function(a) {
if($scope.showAll) { return true; }
var sel = false;
for(tech in $scope.technologyArray){
var t = $scope.technologyArray[tech];
console.log(t);
if(t.on){
if(a.technology.indexOf(t.name) == -1){
return false;
}else{
sel = true;
}
}
}
return sel;
};
$scope.showAll2 = true;
$scope.checkChange2 = function() {
for(t2 in $scope.technologyArray2){
if($scope.technologyArray2[t2].on){
$scope.showAll2 = false;
return;
}
}
$scope.showAll2 = true;
};
$scope.myFunc2 = function(b) {
if($scope.showAll2) { return true; }
var sel2 = false;
for(tech2 in $scope.technologyArray2){
var t2 = $scope.technologyArray2[tech2];
console.log(t2);
if(t2.on){
if(b.technology2.indexOf(t2.name) == -1){
return false;
}else{
sel2 = true;
}
}
}
return sel2;
};
$scope.technologyArray = [{ name: "HTML", on: false}, {name:"CSS", on: false}, {name:"Django", on: false}, {name:"Python", on: false}, {name:"AngularJS", on: false}, {name:"Javascript", on: false}, {name:"3rd party Payment API", on: false}, {name:"3rd party Libraries", on: false}]
$scope.technologyArray2 = [{name:"Jquery", on: false}, {name:"RestfulAPI", on: false}, {name:"AAAAAHH", on: false}, {name:"NodeJS", on: false}, {name:"Mongo", on: false}, {name:"Express", on: false}, {name:"Jade", on: false}, {name:"Wordpress", on: false}, {name:"MySQL", on: false}, {name:"Joomla", on: false}, {name:"Magento", on: false}, {name:"Jira", on:false}];
$scope.portfolioArray = [{
"id": "1",
"name": "Storm Pig",
"technology": ["HTML", "CSS", "Django", "Python", "AngularJS", "Javascript", "3rd party Payment API", "3rd party Libraries"]
}, {
"id": "2",
"name": "Placer",
"technology": ["HTML", "CSS", "Django", "Python", "AngularJS", "Javascript", "Jquery"]
}, {
"id": "3",
"name": "Custom Proposal App",
"technology": ["RestfulAPI", "AAAAAHH", "AngularJS", "HTML", "CSS", "Javascript", "NodeJS", "Mongo", "Express", "Jade"]
}, {
"id": "4",
"name": "21 Zero",
"technology": ["HTML", "CSS", "Wordpress", "MySQL"]
}, {
"id": "5",
"name": "Detour Journal",
"technology": ["HTML", "CSS", "Joomla", "MySQL"]
}, {
"id": "6",
"name": "Dex Custom Websites",
"technology": ["HTML", "CSS", "Wordpress", "MySQL", "Magento", "Jira"]
}, {
"id": "7",
"name": "Conversion Jump",
"technology": ["HTML", "CSS", "Joomla", "MySQL"]
}, {
"id": "8",
"name": "The Canyons Pass",
"technology": ["HTML", "CSS", "Joomla", "MySQL"]
}]
}
请更改此条件
if(a.technology.indexOf(t.name) == -1){
return false;
}else{
sel = true;
}
}
===>
if(a.technology.indexOf(t.name) != -1){
return true;
}else{
sel = false;
}
以下是技术阵列的示例
http://jsfiddle.net/shadiq_aust/9aL1hm4x/9/
相关文章:
- 如何在生成下载文件时显示加载动画
- 如何在谷歌字体加载时显示加载图像
- 现在可以在加载addThis时显示加载吗
- 单击时选择2(未选中),显示加载微调器javascript
- 如何在网页加载时显示加载内容,并在页面完全加载时隐藏此内容
- 在弹出窗口中显示加载消息
- 使用jquery/ajax显示加载图像
- 在引导轮播加载之前显示加载微调器
- 是否可以在页面开始加载之前显示加载gif/image
- 单击链接后显示加载程序
- 等待数据时显示加载程序
- 在谷歌地图上显示加载消息
- 只想在页面上未加载初始数据时显示加载gif
- 如何在加载选项卡内容时显示加载图像
- 如何在ajax请求中显示加载微调器
- 当javascript图像转盘加载36个图像时,我可以显示加载指示器吗
- 隐藏/显示加载功能不起作用
- Jquery Chosen插件-通过Ajax动态填充列表时显示加载图标
- 有没有一种方法可以用jQuery捕获JavaScriptPageMethods调用?(显示加载屏幕)
- jquery图片库显示加载程序gif