Я намагаюся переключити клас елемента за допомогою ng-class
<button class="btn">
<i ng-class="{(isAutoScroll()) ? 'icon-autoscroll' : 'icon-autoscroll-disabled'}"></i>
</button>
isAutoScroll ():
$scope.isAutoScroll = function()
{
$scope.autoScroll = ($scope.autoScroll) ? false : true;
return $scope.autoScroll;
}
В основному, якщо $scope.autoScroll
це правда, я хочу, щоб клас ng був, icon-autoscroll
а якщо його помилковим, я хочу, щоб він бувicon-autoscroll-disabled
Те, що я зараз не працює, створює цю помилку в консолі
Error: Lexer Error: Unexpected next character at columns 18-18 [?] in expression [{(isAutoScroll()) ? 'icon-autoscroll' : 'icon-autoscroll-disabled'}].
Як правильно це зробити?
EDIT
рішення 1: (застаріле)
<button class="btn" ng-click="autoScroll = !autoScroll">
<i ng-class="{'icon-autoscroll': autoScroll, 'icon-autoscroll-disabled': !autoScroll}"></i>
</button>
EDIT 2
рішення 2:
Я хотів оновити рішення, оскільки Solution 3
, надане Стюі, повинно бути таким, яке використовувалося. Це найбільш стандартно, якщо мова йде про потрійний оператор (і мені це найлегше читати). Рішення було б
<button class="btn" ng-click="autoScroll = !autoScroll">
<i ng-class="autoScroll ? 'icon-autoscroll' : 'icon-autoscroll-disabled'"></i>
</button>
перекладається на:
if (autoScroll == true) ?
// використовувати клас 'icon-autoscroll' :
// else use'icon-autoscroll-disabled'
autoScroll
тут буде просто діяти в кожній кнопці? (Я тестував це за допомогою декількох кнопок, і це також добре працює) Я маю на увазі, коли натискаю кожну кнопку, вона впливає саме на цю кнопку, а не на всі кнопки.
angular expressions
docs => Немає звітів про контрольний потік: у кутовому виразі ви не можете виконати будь-якого з наступних дій: conditionals, циклі або кидати. Використовуйте іншу функцію чи директиву