发表于: 2017-01-17 23:50:07

1 1303


今天完成的事情:

#请教二大师兄,搜索功能的判断逻辑实现

明天计划的事情:

#优化分页功能

遇到的问题:

#管状的过滤器,在前面在放一个过滤器来过滤到当值都是一样的时候,该怎么半就好了,然后进入第二个过滤器,但是还是会有问题,这样子,第二个过滤器还是会继续过滤,但放在第一个过滤器后面的话,那么就会出现另外一个问题,就是过滤以后根本就没有值了。这就需要在过滤器里面添加一个判断,判断当值是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;
   }
});

收获:

#搜索功能完成



返回列表 返回列表
评论

    分享到