AngularJS фильтр на основе выбора флажка - PullRequest
0 голосов
/ 12 сентября 2018

Я создал функцию, которая должна фильтровать отображаемые данные на основе выбора флажка.Однако у меня возникают проблемы с отображением правильных данных.Флажки работают, и все, но у меня возникают проблемы при вставке выбранного значения флажка в данные и получении вывода.

enter image description here

Мне нужно выбратьфлажок, чтобы отобразить данные, которые содержат это значение H.

enter image description here

Таким образом, в основном есть 4 флажка, связанных с полем типа, которое вы видите на скриншоте выше.Допустим, я выбираю H. Мне нужны только данные, где тип = 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;

}

Там работает отдельная функция, которая фильтрует ключи, показанные на скриншотах, по дате.Пожалуйста, игнорируйте эту функцию ... Любая помощь приветствуется, так как я застрял на этом в течение нескольких дней ...

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Проверьте этот код для массива фильтров;

 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));
0 голосов
/ 12 сентября 2018

Это довольно просто с подчеркиванием, вы можете передать значение фильтра для одного или нескольких свойств.

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}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...