<button id="tagBtnId" name="TagsFilter" ng-show="disableTagButton">Tags</button>
ng-show применяется свойство display: none
или display: block
. Но я хочу применить свойство visibility: hidden
и visibility: visible
.
<button id="tagBtnId" name="TagsFilter" ng-show="disableTagButton">Tags</button>
ng-show применяется свойство display: none
или display: block
. Но я хочу применить свойство visibility: hidden
и visibility: visible
.
Вы можете использовать ng-class
или ng-style
, как показано ниже
это добавит класс myclass
к кнопке, если только disableTagButton
является истинным, если disableTagButton
является ложным, тогда myclass
будет удаляться с кнопки
выражение ng-class
может быть строкой, представляющей имена классов, ограниченные пробелами, массив или карту имен классов для булевых значений.
1 - имена классов с разделителями пространства
.. ng-class="{strike: deleted, bold: important, red: error}"..
2 - массив
.. ng-class="[style1, style2, style3]"..
style1, style2 и style3 являются классами css, проверьте приведенную ниже демонстрационную версию для получения дополнительной информации.
2 - выражение
.. ng-class="'my-class' : someProperty ? true: false"..
если существует someProperty
, тогда добавьте .my-class
и удалите его.
Если имя класса css в
ng-class
разделено тире, вам необходимо определить его как строку, например.. ng-class="'my-class' : ..
else, которую вы можете определить как строку или не как.. ng-class="myClass : ..
<button id="tagBtnId" name="TagsFilter" ng-class="{'myClass': disableTagButton}">Tags</button>
<style>
.myClass {
visibility: hidden
}
</style>
Выражение передает [
ng-style ][2]
evals объекту, чьими ключами являются имена и значения стиля CSS, соответствующие значения для этих клавиш CSS.
Пример:
.. ng-style="{_key_ : _value_}" ...
= > _key_
- это свойство css, а _value_
- значение свойства. Ex = > .. ng-style="{color : 'red'}" ...
Если вы используете что-то вроде
background-color
, то это не действительный ключ объекта, тогда его нужно указывать как.. ng-style="{'background-color' : 'red'}" ...
так же, как и ng-class.
<button id="tagBtnId" name="TagsFilter" ng-style="disableTagButton">Tags</button>
то ваш disableTagButton
должен выглядеть как
$scope.disableTagButton = {'visibility': 'hidden'}; // then button will hidden.
$scope.disableTagButton = {'visibility': 'visible'}; // then button will visible.
поэтому вы можете изменить видимость кнопки, изменив $scope.disableTagButton
.
или вы можете использовать его как встроенное выражение как
ng-style="{'visibility': someVar ? 'visible' : 'hidden'}"
is someVar
оценивается как true, а видимость установлена на visible
Else visibility, установленная на hidden
.
Вы можете использовать ng-style
. Простой пример:
ng-style="{'visibility': isMenuOpen?'visible':'hidden'}"
Во время выполнения стиль изменяется при изменении isMenuOpen
.
isMenuOpen
true, вы получите style="visibility: visible"
.isMenuOpen
false, у вас будет style="visibility: hidden"
.Вот простая директива, которая устанавливает видимость в скрытую или видимую (но не сворачивается):
.directive('visible', function() {
return {
restrict: 'A',
link: function(scope, element, attributes) {
scope.$watch(attributes.visible, function(value){
element.css('visibility', value ? 'visible' : 'hidden');
});
}
};
})
Использование:
<button visible='showButton'>Button that can be invisible</button>
angular.module('MyModule', [])
.directive('visible', function() {
return {
restrict: 'A',
link: function(scope, element, attributes) {
scope.$watch(attributes.visible, function(value){
element.css('visibility', value ? 'visible' : 'hidden');
});
}
};
})
.controller('MyController', function($scope) {
$scope.showButton = true;
});
<script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.7.0/underscore-min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app='MyModule' ng-controller='MyController'>
<button visible='showButton'>Button that can be invisible</button>
<button ng-click='showButton = !showButton'>Hide it or show it</button>
</div>
Или, если вы используете бутстрап, используйте класс invisible
ng-class='{"invisible": !controller.isSending}'
Вы должны использовать ngClass или ngStyle, в вашем случае:
<button id="tagBtnId" name="TagsFilter"
ng-class="{'button-hidden':!disableTagButton}">Tags</button>
И этот CSS:
.button-hidden{
visibility: hidden;
}
см. https://docs.angularjs.org/api/ng/directive/ngShow раздел о переопределении .ng-hide
Все, что вам нужно, - это присвоить классу hg-hide-animate
элементу
/* style your element(s) at least for selector.ng-hide */
/* in this case your selector is #tagBtnId */
#tagBtnId.ng-hide {
/*visibility:hidden;*/
opacity: 0;
transition: opacity 1s ease-in;
}
#tagBtnId {
/*visibility:initial;*/
opacity: 1;
transition: opacity 1s ease-out;
}
(function() {
angular.module('app', []).controller('controller', Controller);
/* @ngInject */
function Controller($s) {var THIS = this;THIS.disableTagButton = false;}
Controller.$inject = ['$scope'];
})();
/* style your element(s) at least for selector.ng-hide */
/* in this case your selector is #tagBtnId */
#tagBtnId.ng-hide {
/*visibility:hidden;*/
opacity: 0;
transition: opacity 1s ease-in;
}
#tagBtnId {
/*visibility:initial;*/
opacity: 1;
transition: opacity 1s ease-out;
}
<div ng-app='app' ng-controller="controller as viewmodel">
<label>disabled</label>
<input type="checkbox" ng-model="viewmodel.disableTagButton" />
<!-- assign class "ng-hide-animate" -->
<button
class="ng-hide-animate"
id="tagBtnId" name="TagsFilter" ng-hide="viewmodel.disableTagButton">
Tags
</button>
<pre inspect>viewmodel={{viewmodel | json}}</pre>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.min.js"></script>
почему вы не используете ng-if тэг, который не отображается на вашей странице html. Я думаю, вы используете это:
<button id="tagBtnId" name="TagsFilter" ng-if="disableTagButton">Tags</button>