Я показываю результаты поиска с разбивкой на страницы в следующем формате.
1 2 3 4 5 6 7 8 9 10
С помощью
<ul>
<li ng-repeat="page in pages">
<span ng-click="next($index)">{{$index + 1}}</span>
</li>
</ul>
Я должен сделать currentPage
не кликабельным визуально с помощью CSS. Мне интересно, как это можно сделать с помощью angular, добавляя или удаляя классы во время выполнения с помощью событий нажатия. Я имитирую, как отображается область подкачки результатов поиска Google.
.link {
text-decoration: underline;
}
.no-link {
text-decoration: none;
}
2 ответа
Добавьте ng-class в вашу разметку
<ul>
<li ng-repeat="page in pages">
<span ng-class="{'link':currentPage !== $index, 'no-link': currentPage === $index}" ng-click="next($index)">{{$index + 1}}</span>
</li>
</ul>
В следующей функции в верхней части функции добавьте
if ($scope.currentPage === index) return false;
Если вы храните переменную currentPage
в своем $scope
, а $scope.currentPage
надежно обновляется в вашей функции $scope.next()
, вы можете добавить {{X4} } в вашем диапазоне:
<span ng-click="next($index)" ng-class="{ 'link' : currentPage !== $index, 'no-link' : currentPage === $index }">{{$index + 1}}</span>
Фактически, мы передаем ng-class
карту объектов в форме map['cssClass'] = /* some angular expression */
. Если угловое выражение, соответствующее классу CSS, является правдивым, то класс будет добавлен к элементу HTML. , в противном случае он будет опущен.
Итак, в вашем примере класс 'link' будет добавлен в диапазон только в том случае, если $index
страницы не является страницей, которую мы просматриваем в данный момент (т.е. это не $scope.currentPage
).
Похожие вопросы
Новые вопросы
angularjs
Используйте для вопросов об AngularJS (1.x), JavaScript-фреймворке с открытым исходным кодом. НЕ используйте этот тег для Angular 2 или более поздних версий; вместо этого используйте тег [angular].