发表于: 2017-01-17 23:50:07
1 1299
今天完成的事情:
#请教二大师兄,搜索功能的判断逻辑实现
明天计划的事情:
#优化分页功能
遇到的问题:
#管状的过滤器,在前面在放一个过滤器来过滤到当值都是一样的时候,该怎么半就好了,然后进入第二个过滤器,但是还是会有问题,这样子,第二个过滤器还是会继续过滤,但放在第一个过滤器后面的话,那么就会出现另外一个问题,就是过滤以后根本就没有值了。这就需要在过滤器里面添加一个判断,判断当值是0的时候,直接加载数据。然而实际上这个是行不通的,后来的做法是在点击事件被触发的就循环判断一次值是否为0,如果是就不进入,这样的做法。而如果把值传进去之后在修改会出现BUG。有的值就会搜不到,很奇怪。
//点击判断
$scope.search = function() {
$scope.names = nukeService.getNukes();
$scope.obj = $location.search();
for (var x in $scope.obj){
if($scope.obj[x]==0){
delete $scope.obj[x]
}
}
}
//搜索功能代码展示
myApp.filter('matching',function(){
return function (res,obj){
if(res){
//新建一个数组,存储筛选后的值
var array = [];
//循环res
angular.forEach(res,function(ele,index){
//建立i变量来记录obj里面有多少个属性
var i = 0;
//建立c变量来记录ele的相等于obj属性值的有多少个
var c = 0;
//新建变量x来循环出obj对象有几个属性,每一个属性,i++
for(var x in obj){
i+=1;
//if(obj[x] == 0){
// delete $scope.obj[x]
//}
//如果res的属性和obj的属性相等,c++
if(ele[x]==obj[x]){
c++;
}
}
//等待循环结束之后,判断值是否相等,如果相等进行push,如果不相等,那就不是需要的值
if(i==c){
array.push(res[index])
}
})
}
return array;
}
});
收获:
#搜索功能完成
评论