Tôi đã gặp vấn đề khi áp dụng các lớp bên trong các thành phần bảng khi tôi có một lớp đã được áp dụng cho toàn bộ bảng (ví dụ: màu được áp dụng cho các hàng lẻ <myClass tbody tr:nth-child(even) td>
). Có vẻ như khi bạn kiểm tra phần tử bằng Công cụ dành cho nhà phát triển , element.style
kiểu không được gán. Vì vậy, thay vì sử dụng ng-class
, tôi đã thử sử dụng ng-style
và trong trường hợp này, thuộc tính CSS mới xuất hiện bên trong element.style
. Mã này hoạt động rất tốt cho tôi:
<tr ng-repeat="element in collection">
[...amazing code...]
<td ng-style="myvar === 0 && {'background-color': 'red'} ||
myvar === 1 && {'background-color': 'green'} ||
myvar === 2 && {'background-color': 'yellow'}">{{ myvar }}</td>
[...more amazing code...]
</tr>
Myvar là những gì tôi đang đánh giá, và trong mỗi trường hợp, tôi áp dụng một kiểu cho mỗi kiểu <td>
tùy thuộc vào myvar giá trị , ghi đè lên kiểu hiện tại được áp dụng bởi lớp CSS cho toàn bộ bảng.
CẬP NHẬT
Nếu bạn muốn áp dụng một lớp cho bảng chẳng hạn, khi truy cập một trang hoặc trong các trường hợp khác, bạn có thể sử dụng cấu trúc này:
<li ng-class="{ active: isActive('/route_a') || isActive('/route_b')}">
Về cơ bản, những gì chúng ta cần để kích hoạt một lớp ng là lớp để áp dụng và một tuyên bố đúng hoặc sai. Đúng áp dụng lớp và sai không. Vì vậy, ở đây chúng tôi có hai kiểm tra về tuyến đường của trang và OR giữa chúng, vì vậy nếu chúng tôi ở trong /route_a
OR chúng tôi đang ở route_b
, lớp hoạt động sẽ được áp dụng.
Điều này hoạt động chỉ cần có một chức năng logic ở bên phải trả về đúng hoặc sai.
Vì vậy, trong ví dụ đầu tiên, phong cách ng được quy định bởi ba câu lệnh. Nếu tất cả chúng đều sai, không có kiểu nào được áp dụng, nhưng theo logic của chúng tôi, ít nhất một kiểu sẽ được áp dụng, vì vậy, biểu thức logic sẽ kiểm tra so sánh biến nào là đúng và bởi vì một mảng không trống luôn luôn đúng, điều đó sẽ đúng để lại một mảng là trả về và chỉ có một đúng, vì chúng tôi đang sử dụng OR cho toàn bộ phản hồi, kiểu còn lại sẽ được áp dụng.
Nhân tiện, tôi quên cung cấp cho bạn hàm isActive ():
$rootScope.isActive = function(viewLocation) {
return viewLocation === $location.path();
};
CẬP NHẬT MỚI
Ở đây bạn có một cái gì đó tôi thấy thực sự hữu ích. Khi bạn cần áp dụng một lớp tùy thuộc vào giá trị của biến, ví dụ: biểu tượng tùy thuộc vào nội dung của nó div
, bạn có thể sử dụng mã sau (rất hữu ích trong ng-repeat
):
<i class="fa" ng-class="{ 'fa-github' : type === 0,
'fa-linkedin' : type === 1,
'fa-skype' : type === 2,
'fa-google' : type === 3 }"></i>
Các biểu tượng từ Font Awesome