У меня есть span с атрибутом ng-click = "...". Ng-click слегка изменяет CSS-диапазон в DOM, чтобы он был более похожим на кнопки. В моем приложении я хочу переключить, доступен ли этот диапазон или нет. Я могу сделать ng-click не делать ничего достаточно простого, но я бы предпочел просто удалить/отключить атрибут вообще. Это делается для того, чтобы избежать "блокировки", которую ng-click делает с элементом. Также было бы неплохо, если бы атрибут был вновь включен, если интерактивные переменная снова становится истинным.
Я хотел бы получить решение, которое позволит избежать использования $ scope. $ Watches, потому что мое приложение довольно большое, а часы медленные.
Благодарю!
Я думаю, что у вас может быть два пролета с атрибутом ng-click
и без него, и на основе этой переменной с ng-click
вы управляете этими двумя пролетами с помощью ng-if
или ng-show
Простое решение, предложенное Ачу !
Просто используйте два пролета вместо того, чтобы переключать атрибут на одном интервале.
<span ng-if="clickable" ng-click="...">Click me!</span>
<span ng-if="!clickable">Cant click me!</span>
Если бы я был в такой ситуации, я бы не попытался enable
или disable
атрибут ng-click
. Скорее, я бы использовал некоторую флаговую переменную с $scope
чтобы увидеть, должна ли функция щелчка выполнять свою функциональность или нет, как в вашем контроллере, у вас есть метод, подобный
$scope.spanClick = function(){
if(!$scope.shouldClick){
return;//simply do nothing
}
//Do button click logic
}
ng-click
и без него, и на основании этой переменной, которую можно активировать, вы управляете этими двумя отрезками с помощьюng-if
илиng-show
.