Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.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,我有一个包含子阵列的对象(用户)列表 [{ name:'username', offer: [1,5,123,12] }, { name:'username2', offer: [1,3,13,212] }] 我有一个复选框列表(500个元素,按手风琴列表分组) {{item.name} 现在,我要做的是只显示具有选中属性的用户。这是ng与offerFilter的重复部分 <div class="col-sm-6 col-md-4" ng-repeat="profil

我有一个包含子阵列的对象(用户)列表

[{
  name:'username',
  offer: [1,5,123,12]
},
{
  name:'username2',
  offer: [1,3,13,212]
}]
我有一个复选框列表(500个元素,按手风琴列表分组)


{{item.name}
现在,我要做的是只显示具有选中属性的用户。这是ng与offerFilter的重复部分

<div class="col-sm-6 col-md-4" ng-repeat="profile in profiles | filter: search | offerFilter">
                <div class="thumbnail">
                    <img src="media/sezon_lowerq.jpg" alt="image">
                    <div class="caption" style="height:7em">
                        <strong ng-if="profile.name">{{ profile.name }}</strong>
                        <span ng-if="profile.lastname">{{ profile.firstname }} {{ profile.lastname }}</span>
                        <br>
                        <a href="#/profile/{{ profile.id }}" class="btn btn-default btn-sm">Read more</a>
                    </div>
                </div>
            </div>

{{profile.name}
{{profile.firstname}{{profile.lastname}}

offerFilter看起来像这样

var myFilters = angular.module('myFilters', []);

myFilters.filter('offerFilter', function() {
    return function(items) {

        var results = [];
        if (items) {
            for (var i = 0; i < items.length; i++) {
                if(items[i].offer.length>0 && items[i].offer!=0){
                    for (var j = 0; j < items[i].offer.length;j++){
                        var value = items[i].offer[j];

                        if (results.indexOf(value) == -1) {
                            results.push(value);
                        }
                    }
                }
            }
            return results;
        } else {
          return 'Doh!';
        }
   }
})  
var myFilters=angular.module('myFilters',[]);
myFilters.filter('offerFilter',function(){
返回函数(项目){
var结果=[];
若有(项目){
对于(变量i=0;i0&&items[i].offer!=0){
对于(var j=0;j

问题是,当我选中一个复选框(例如value=“1”)时,所有内容都隐藏了。

我使用ng change和ng show指令找到了解决方案

$scope.offertest = function(){
        angular.forEach($scope.profiles,function(profile,$index){
            profile.offertest = true;   
        });

        angular.forEach($scope.searchoffer,function(item,key){
            if(item){
                var keepGoing = true;
                angular.forEach($scope.profiles,function(profile,$index){
                    if(keepGoing){
                        if(profile.offer.length>0 && profile.offer!=0){ 
                            if(profile.offer.indexOf(item)==-1){
                                profile.offertest = false;  
                                keepGoing = false;
                            }
                        }
                        else {
                            profile.offertest = false;
                        }
                    }
                });
            }
            else {
                delete $scope.searchoffer[key];
            }
        });
    }
这些复选框现在具有ng change指令。search.offer现在是searchoffer

<input type="checkbox" 
    ng-model="searchoffer[item.id]" 
    ng-change="offertest()"
    ng-true-value="{{item.id}}" 
    ng-false-value="0" /> 
    {{offer.name}} </label>

{{offer.name}
和用户列表

<div class="col-sm-6 col-md-4" ng-repeat="profile in profiles | filter: search"` ng-show="profile.offertest">..</div>
。。

这是可行的,但可能有更好的解决方案……

问题是什么?您试图解决此问题的代码在哪里?
<div class="col-sm-6 col-md-4" ng-repeat="profile in profiles | filter: search"` ng-show="profile.offertest">..</div>