Tôi đang sử dụng định tuyến của AngularUI và tôi muốn thực hiện ng-class="{active: current.state}"
nhưng tôi không chắc làm thế nào để phát hiện chính xác trạng thái hiện tại trong một chỉ thị như thế này.
Câu trả lời:
Cập nhật:
Câu trả lời này dành cho phiên bản cũ hơn nhiều của Ui-Router. Đối với các bản phát hành gần đây hơn (0.2.5+), vui lòng sử dụng chỉ thị trợ giúp ui-sref-active
. Thông tin chi tiết tại đây .
Câu trả lời gốc:
Bao gồm dịch vụ $ state trong bộ điều khiển của bạn. Bạn có thể gán dịch vụ này cho một thuộc tính trong phạm vi của bạn.
Một ví dụ:
$scope.$state = $state;
Sau đó, để có được trạng thái hiện tại trong các mẫu của bạn:
$state.current.name
Để kiểm tra xem trạng thái hiện tại có đang hoạt động hay không:
$state.includes('stateName');
Phương thức này trả về true nếu trạng thái được bao gồm, ngay cả khi nó là một phần của trạng thái lồng nhau. Nếu bạn đang ở trạng thái lồng nhau user.details
và bạn đã kiểm tra $state.includes('user')
, nó sẽ trả về true.
Trong ví dụ lớp học của bạn, bạn sẽ làm điều gì đó như sau:
ng-class="{active: $state.includes('stateName')}"
Nếu bạn đang sử dụng ui-router, hãy thử $ state.is ();
Bạn có thể sử dụng nó như vậy:
$state.is('stateName');
Theo tài liệu:
$ state.is ... tương tự như $ state.includes, nhưng chỉ kiểm tra tên tiểu bang đầy đủ.
Việc sử dụng chỉ thị ui-sref-active phù hợp với tôi là:
<li ui-sref-active="{'active': 'admin'}">
<a ui-sref="admin.users">Administration Panel</a>
</li>
như được tìm thấy ở đây dưới bình luận có nhãn "tgrant59 nhận xét vào ngày 31 tháng 5 năm 2016".
Tôi đang sử dụng angle-ui-router v0.3.1.
Kiểm tra angle-ui, cụ thể là kiểm tra tuyến đường: http://angular-ui.github.io/ui-utils/