Обработка выражения вне повторения в ng-классе

0

Может кто-то, пожалуйста, позвольте мне одолжить ваши глаза на секунду, потому что это должен быть какой-то немой маленький нюанс, которого я здесь не хватает...?

Так, например, в ng-repeat я вытаскиваю значение и бросаю внутри него выражение inline (в этом примере просто изменяя цвет текста в зависимости от того, сколько дней прошло это значение):

EDIT * - scope.item ничего не значит, в частности, я просто немного изменил формулировку, чтобы избавиться от любых идентифицирующих имен ради интернет-примера.

ng-class="{
            'green-text':{{daysSinceToday(item.theItemDate) <= 20}},
            'orange-text':{{daysSinceToday(item.theItemDate) > 20 && daysSinceToday(item.theItemDate) < 30}},
            'red-text':{{daysSinceToday(item.theItemDate) >= 30}}
           }">

Что работает великолепно, за исключением того, что когда я выхожу за пределы области ng-repeat и пытаюсь что-то подобное, но используя только [0] в индексе элемента, как вы видите, я все еще могу получить значение для отображения, но это doesn Кажется, что он вообще не заботится о выражениях класса ng и вместо этого просто захватывает первый класс, указанный в ng-классе, независимо от его значения.

Поэтому, если я делаю что-то вроде этого ВНЕШНЕГО ng-repeat;

ng-class="{
            'someclass':{{daysSinceToday(scope.item[0].theItemDate) <= 20}},
            'anotherclass':{{daysSinceToday(scope.item[0].theItemDate) > 20 && daysSinceToday(scope.item[0].theItemDate) < 30}},
            'yetanotherclass':{{daysSinceToday(scope.item[0].theItemDate) >= 30}}
           }">

Это, похоже, не заботит, что странно, потому что, если я просто поставлю его туда, как будто;

{{daysSinceToday(scope.item[0].theItemDate)}}

Без выражения это дает мне правильное значение, но, похоже, игнорирует ng-класс. Что мне здесь не хватает? Я, должно быть, устал, и этот понедельник должен закончиться высокой нотой. Благодарю!

Теги:
angularjs-scope
angularjs-directive
angularjs-ng-repeat

2 ответа

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

Хах! Файл под я Blame Недостаток кофеина, вы хотите:

ng-class="{
            'someclass':daysSinceToday(scope.item[0].theItemDate) <= 20,
            'anotherclass':daysSinceToday(scope.item[0].theItemDate) > 20 && daysSinceToday(scope.item[0].theItemDate) < 30,
            'yetanotherclass':daysSinceToday(scope.item[0].theItemDate) >= 30
           }">

... внутри ng-класса не требуется никаких завитушек.

(Правила для того, когда вам нужно {{}}, и когда вы не производите и сбиваете с толку легко упускать из виду, как это здесь совершенно ясно видно)

  • 0
    О, ты грязный (* &% _ &% & $ @ _ && * #% ^ $ ^ $% $% !!!!! СПАСИБО!
  • 0
    Очевидно, что я все еще изучаю предостережения в отношении angular / html / css, после того, как слишком долго живу в своем мире xaml / .net, ха-ха. Серьезно, спасибо за кусок скромного пирога ..
Показать ещё 3 комментария
0

Вы не получите доступ к нему как scope.item[0]. Я не уверен, что является переменной, которую вы ng-repeat в ng-repeat но, предполагая, что вы используете что-то вроде items, вы должны получить к нему доступ только с items[0].whatever(...

Ещё вопросы

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