Стиль ngClass з тире в ключі


165

Я сподіваюся, що це вбереже когось від головного болю зі стилями, які використовують тире, тим більше, що завантажувальний набір став таким популярним.

Я використовую кутовий 1.0.5

<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.js"></script>

У документації ngClass приклад простий, але він також згадує, що вираз може бути картою назв класів до булевих значень. Я намагався використовувати стиль "білий-білий" на моєму значку, як показано в документації на завантаження , залежно від булевої змінної.

<i class="icon-home" ng-class="{icon-white: someBooleanValue}">

Рядок вище не працює. Клас не додається, icon-whiteколи someBooleanValueце правда. Однак якщо я змінити ключ iconWhite, він успішно додається до списку значень класу. Як можна додати значення з тире?


1
Привіт, ласкаво просимо до SO! Ви повинні оновити своє запитання, щоб розділити його на запитання та відповідь - відповісти на власне питання добре, і заохочуватись, якщо це корисно. Таким чином ви можете прийняти свою відповідь, а інші, хто шукає, можуть побачити, що на це питання вдала відповідь.
Алекс Осборн

Дякуємо за вашу пропозицію!
Foo L

Відповіді:


364

Після годинного злому навколо, виявляється, тире стає інтерпольованим! Цитати потрібні.

<i class="icon-home" ng-class="{'icon-white': someBooleanValue}">

Я сподіваюся, що це допоможе комусь зірвати волосся.

ОНОВЛЕННЯ:

У старих версіях Angular використання зворотної косої риски також робить хитрість, але не в нових версіях.

<i class="icon-home" ng-class="{icon\-white: someBooleanValue}">

Перший, мабуть, кращий, оскільки ви можете легше шукати його в улюбленому редакторі.


15
ДЯКУЮ за це. Я даремно багато часу втрачав і на цьому.
taudep

2
Дякую!!! Я знав, що це відбувається, але не знав, як вирішити. ДЯКУЮ!
Марк Форд

1
Я використовую AngularJS 1.2.3. Значення "\ -" не працює для мене. "" "працював дуже добре.
bobzsj87

1
Мені було цікаво, чому це не працює для мене, коли я, здавалося, наслідую інші приклади!
невстер

$ range.someBooleanValue = true
zloctb

11

\'icon-white\' працює також (з AngularJS 1.2.7)


Це найкраща відповідь, оскільки це найбільш дружнє майбутнє та сумісне ззаду
Ерік Штейнборн

2
Привіт! @EricSteinborn Я з майбутнього, я прийшов сюди, щоб попередити вас: Це зовсім не дружньо!
Typo

0

альтернатива для використання ng-класу:

    .menu-disabled-true{
color: red;
}
    .menu-disabled-false{
color: green;
}


<div ng-controller="DeathrayMenuController">
<p class=menu-disabled-{{status}}>shanam</p>
 <button ng-click="action()">click me</button>
</div>

<script>



function DeathrayMenuController($scope) {
    $scope.status=true
    $scope.action= function(){
      $scope.status=!$scope.status
    }
}
</script>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.