нг-шоу в массиве, содержащем объекты

0

У меня возникли проблемы с выяснением того, как использовать директиву ng-if с определенным свойством в массиве объектов.

Массив:

[{"Id":1087,
"CreateDate":"2015-11-02T19:26:39.007",
"Message":"Some text in here...",
"AffectedDate":null,
"Type":"a",
"CreatePeriod":"Today",
"CreateDateString":"Monday, November 2, 2015 7:26 PM"},
 {"Id":1086,
"CreateDate":"2015-11-02T19:26:25.2",
"Message":"Some text in here...",
"AffectedDate":null,
"Type":"a",
"CreatePeriod":"Yesterday",
"CreateDateString":"Monday, November 2, 2015 7:26 PM"},
 {"Id":1085,
"CreateDate":"2015-11-02T19:26:13.677",
"Message":"Some text in here...",
"AffectedDate":"2015-10-30T07:00:00",
"Type":"a",
"CreatePeriod":"Older",
"CreateDateString":"Monday, November 2, 2015 7:26 PM"}]

Выше представлен массив объектов, и я хотел бы использовать директиву ng-show для следующего заголовка.

<h3 ng-show="">Last Week</h3>

Свойство, которое я хочу использовать с ng-show, - CreatePeriod

Используя вышеприведенный HTML, поскольку нет объекта с CreatePeriod с "Last Week", я хочу скрыть этот заголовок.

Можно ли это сделать с помощью простого ng-show? Или мне нужно использовать ng-repeat в сочетании с ng-show?

Благодарю!

  • 1
    Итак, вы хотели бы, чтобы этот заголовок присутствовал, если хотя бы один элемент массива имеет "CreatePeriod":"Last Week" , верно?
  • 1
    stackoverflow.com/questions/31944037/...
Показать ещё 1 комментарий
Теги:

1 ответ

1
Лучший ответ

Вы можете создать метод в контроллере, чтобы проверить свое состояние:

$scope.data = [{
    "Id": 1087,
    "CreateDate": "2015-11-02T19:26:39.007",
    "Message": "Some text in here...",
    "AffectedDate": null,
    "Type": "a",
    "CreatePeriod": "Today",
    "CreateDateString": "Monday, November 2, 2015 7:26 PM"
}, {
    "Id": 1086,
    "CreateDate": "2015-11-02T19:26:25.2",
    "Message": "Some text in here...",
    "AffectedDate": null,
    "Type": "a",
    "CreatePeriod": "Yesterday",
    "CreateDateString": "Monday, November 2, 2015 7:26 PM"
}, {
    "Id": 1085,
    "CreateDate": "2015-11-02T19:26:13.677",
    "Message": "Some text in here...",
    "AffectedDate": "2015-10-30T07:00:00",
    "Type": "a",
    "CreatePeriod": "Older",
    "CreateDateString": "Monday, November 2, 2015 7:26 PM"
}];

$scope.checkCreatePeriod = function(value) {

    var result = false;
    angular.forEach($scope.data, function(obj) {

        if (obj['CreatePeriod'] === value && result === false) {
            result = true;
        }

    });

    return result;
}

Ввиду:

<h3 ng-show="checkCreatePeriod('LastWeek')">Last Week</h3>
  • 0
    Спасибо за рекомендацию. Я предполагаю, что использование ng-repeat или контроллера логики было бы единственным способом. Я выбрал этот метод, потому что он кажется более подходящим для фильтрации через контроллер.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню