@semolex

Как отфильтровать таблицу с помощью чекбоксов по вложенным полям обьекта с помощью AngulaeJS?

Мне нужно отфильтровать таблицу з массивом обьектов по некоторым параметрам. И нужно сделать это с помощью чекбоксов\радио и т.д.
Вот пример обьектов:
{
    "_id": "24b87678e363397ec9e89d61bdde5d90",
    "priority": 1,
    "updated": "2015-04-27T15:30:36Z",
    "name": "angelus",
    "active": true,
    "options": {
        "disable_work": true,
        "remote": yes
}
    },

{
    "_id": "24b87678e363397ec9e89dadbdde5d90",
    "priority": 3,
    "updated": "2015-04-27T15:30:36Z",
    "name": "raminus",
    "active": true,
      }


Вот как я пытаюсь отфильтровать все это:
controller.js:
$scope.itemFilterForm = {};
view:
<input type="checkbox" ng-true-value="true"  ng-false-value="" ng-model='itemFilterForm.options.disable_work'>

Ну, и ставлю фильтр по обьекту в ng-repeat.
Так вот, проблема вот в чем:
Когда я ставлю чекбокс, все фильтруется как надо. Но вот когда я снимаю, то видно только те обьекты, у коготорых есть проперти `options` и не показывает остальные. Как сделать так, чтоб при снятии флажка с чекбокса, показывались все обьекты?

п.с.Таких чекбоксов может быть несколько, каждый из которых отвечает за один из параметров из проперти `options`, которая есть не у всех обьектов.
  • Вопрос задан
  • 232 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Kano
Обращаясь к документации ангуляра https://docs.angularjs.org/api/ng/filter/filter
находим что фильтр filter может принимать три параметр
1. массив данных
2. выражение - строка, объект или функция (в вашем случае это обьект формы)
3. функция сравнения - вот её нам и нужно определить в нашем scope
Функция эта принимает 2 параметра, первый это элемент списка, второй это объект вашей формы., возвращает эта функция true, false или undefined. Вы можете сами определить логику сравнения двух этих параметров вот пример stackoverflow.com/questions/21199759/angularjs-fil...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы