【问题标题】:AngularJS filter based on checkbox selection基于复选框选择的AngularJS过滤器
【发布时间】:2019-02-17 09:52:32
【问题描述】:

我创建了一个函数,该函数应该根据复选框选择过滤显示的数据。但是,我无法显示正确的数据。复选框正常工作,但我无法将选定的复选框值推送到数据中并获取输出。

我需要选中复选框以显示包含该 H 值的数据。

所以基本上有 4 个复选框与您在上面的屏幕截图中看到的类型字段相关联。假设我选择 H。我只需要显示 type = H 的数据。我将在下面附上我目前所拥有的一些代码。我似乎无法让它工作。

var filterOtb = function (keepOpen, types) {
var filtered = data;
var checkedTypes = [];

console.log('filtered = ', filtered);

scope.types.forEach(function(code) {
 if (code.selected) {
  checkedTypes.push(code.type);
  console.log('selected checkbox', checkedTypes);
 }
});

if (scope.validDates.from) {
 filtered = filterOtbByDateRange();
}

if (modal && !keepOpen) {
 modal.hide();
}
return filtered;

}

其中运行了一个单独的函数,可按日期过滤屏幕截图中显示的键。请忽略该功能...感谢您的帮助,因为我已经坚持了几天...

【问题讨论】:

标签: javascript html angularjs json filtering


【解决方案1】:

下划线很简单,你可以为一个或多个属性传递过滤器值。

let listOfPlays = 
    [
    {title: "The Rambo", author: "Shakespeare", year: 1520},
    {title: "Cymbeline", author: "Shakespeare", year: 1611},
    {title: "The Tempest", author: "Shakespeare", year: 1611},
    {title: "The Dog", author: "Shakespeare", year: 1900}
    ]


_.where(listOfPlays, {author: "Shakespeare", year: 1611});
=> [{title: "Cymbeline", author: "Shakespeare", year: 1611},
    {title: "The Tempest", author: "Shakespeare", year: 1611}]

【讨论】:

  • 我对 AngularJS 还很陌生,所以我不太确定如何用我的代码来实现它...
  • 只需将其包含在 index.html 中,或者您可以在本地下载文件而不包含它。 underscore<script src="https://underscorejs.org/underscore-min.js"></script>
  • 我已经在使用那个库了我只是不知道你的回答如何回答我的问题......
【解决方案2】:

检查此代码以获取过滤器数组;

 var data = [{ id: '1', type: 'H' }, { id: '2', type: 'H' }, { id: '3', type: 'M' }, { id: '4', type: 'G' }, { id: '5', type: 'J' }, { id: '6', type: 'G' }];
    var types = ['H', 'G'];  

    var filter = function (data, types) {
        return data.filter(item => types.includes(item.type));
    }
    console.log(filter(data, types));
    

    var data = [
        { id: '1', type: 'H' },
        { id: '2', type: 'H' },
        { id: '3', type: 'M' },
        { id: '4', type: 'G' },
        { id: '5', type: 'J' },
        { id: '6', type: 'G' }
    ];

    var types = [
        { type: 'H', selected: true },
        { type: 'M', selected: true },
        { type: 'G', selected: false },
        { type: 'J', selected: false }];

    var filterOtb = function (types) {
        var filtered = data;
        var checkedTypes = [];
        console.log('filtered = ', filtered);
        types.forEach(function (code) {
            if (code.selected) {
                checkedTypes.push(code.type);
                console.log('selected checkbox', checkedTypes);
            }
        });
        return data.filter(item => checkedTypes.includes(item.type));
        
      
    }
    console.log(filterOtb(types));

【讨论】:

  • 你能根据我的代码 sn-p 写这个吗...所以我知道这个代码属于哪里...?谢谢
  • 我换个方法
猜你喜欢
  • 2013-05-25
  • 1970-01-01
  • 1970-01-01
  • 2014-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-06
相关资源
最近更新 更多