Tôi đang cố gắng chuyển đổi lớp của một phần tử bằng cách sử dụng 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;
}
Về cơ bản, nếu $scope.autoScroll
là đúng, tôi muốn ng-class là icon-autoscroll
và nếu nó sai, tôi muốn nó làicon-autoscroll-disabled
Những gì tôi có bây giờ không hoạt động và đang tạo ra lỗi này trong bảng điều khiển
Error: Lexer Error: Unexpected next character at columns 18-18 [?] in expression [{(isAutoScroll()) ? 'icon-autoscroll' : 'icon-autoscroll-disabled'}].
Làm thế nào để tôi làm điều này một cách chính xác?
BIÊN TẬP
giải pháp 1: (lỗi thời)
<button class="btn" ng-click="autoScroll = !autoScroll">
<i ng-class="{'icon-autoscroll': autoScroll, 'icon-autoscroll-disabled': !autoScroll}"></i>
</button>
CHỈNH SỬA 2
giải pháp 2:
Tôi muốn cập nhật giải pháp vì Solution 3
, được cung cấp bởi Stewie, nên là giải pháp được sử dụng. Đó là tiêu chuẩn nhất khi nói đến toán tử ternary (và với tôi dễ đọc nhất). Giải pháp sẽ là
<button class="btn" ng-click="autoScroll = !autoScroll">
<i ng-class="autoScroll ? 'icon-autoscroll' : 'icon-autoscroll-disabled'"></i>
</button>
Dịch sang:
if (autoScroll == true) ?
// sử dụng lớp 'icon-autoscroll' :
// sử dụng khác'icon-autoscroll-disabled'
autoScroll
ở đây sẽ chỉ có hiệu lực trong mỗi nút? (Tôi đã thử nghiệm điều này với nhiều nút và nó cũng hoạt động tốt) Ý tôi là, khi tôi nhấp vào từng nút, nó chỉ có tác dụng với nút đó, thay vì tất cả các nút.
angular expressions
mỗi tài liệu => Không có Báo cáo luồng điều khiển: bạn không thể thực hiện bất kỳ điều nào sau đây trong biểu thức góc: điều kiện, vòng lặp hoặc ném. Sử dụng chức năng hoặc chỉ thị khác