Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   Как ng-hide поменять так чтобы он не скрывал элемент, а применял к нему css класс? (https://javascript.ru/forum/angular/71596-kak-ng-hide-pomenyat-tak-chtoby-ne-skryval-ehlement-primenyal-k-nemu-css-klass.html)

Djambulat 30.11.2017 10:29

Как ng-hide поменять так чтобы он не скрывал элемент, а применял к нему css класс?
 
Добрый день.
http://jsfiddle.net/jx9mz/235/

Как ng-hide поменять так чтобы он не скрывал элемент, а применял к нему css класс?

ksa 30.11.2017 10:32

Цитата:

Сообщение от Djambulat
Как ng-hide поменять так чтобы он не скрывал элемент, а применял к нему css класс?

Поменяй на ng-class...

Djambulat 30.11.2017 10:42

Поменять то можно, просто возможно ли осуществить то, что я говорю? Это реально?

Dilettante_Pro 30.11.2017 12:06

Djambulat,
При использовании ng-hide/ng-show элемент скрывается или показывается путем добавления или удаления css класса .ng-hide.

Djambulat 30.11.2017 13:41

Если можешь объясни по-другому я не понял)

Dilettante_Pro 30.11.2017 14:00

Djambulat,
Это специализированные директивы - для простоты использования.
Цитата:

ngShow и ngHide позволяют отображать или скрывать различные элементы. Это помогает при создании Angular-приложений, так как наши SPA, скорее всего, будут иметь много частей, которые, в зависимости от состояния нашего приложения необходимо скрывать или показывать.

Большим преимуществом этих директив является то, что нам нет необходимости скрывать или показывать элементы при помощи CSS или JavaScript. Это все обрабатывает старый добрый Angular.

Djambulat 30.11.2017 14:11

Я знаю, что делают эти директивы. Просто у меня такая задача....
На странице есть клавиатура, и блок(div) внутри которого есть текст, к которому применен css класс. Мне нужно, чтобы после того как я напечатаю на 5 букв с клавиатуры, этот класс исчезал и текст был обычным.... Сможете помочь?

Dilettante_Pro 30.11.2017 15:05

<!DOCTYPE html>
<html lang="en" ng-app="app">
<head>
  <style type="text/css">
  div {height:20px;}
  div span{
    cursor: pointer;
    border:1px solid black;
  }
.short{ color: green;}
.long {color:red; }
  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.6/angular.min.js"></script>
</head>
<body>
   <main ng-controller="AppController">
    <div ng-class="{short:inputstring.length <= 5, long: inputstring.length > 5}">{{ inputstring }}</div>
    <div>
      <span ng-click="chngShift()"> {{view}}</span>
      <span ng-click="chngLetter()">{{language}}</span>
      <span ng-repeat='b in letter' ng-click="getLetter(b)"> {{b}}</span>
      <span ng-click="inputstring = inputstring.slice(0,-1)" >&lArr;</span>
    </div>
   </main>
<script>
(function() {
  'use strict';
  angular
  .module('app', [])
   .controller('AppController', ['$scope', function($scope) {
       var alfa ={eng:{alt:'rus',alf:'qwerty'}, rus:{alt:'eng',alf:'йцукен'}};
       var shift ={up:{alt:'down',view:'String.fromCharCode(0x21D1)'},down:{alt:'up',view:'String.fromCharCode(0x21D3)'}};
       $scope.view =  eval(shift.up.view);
       $scope.shift =  shift.up.alt;
       $scope.letter = alfa.eng.alf;
       $scope.language =alfa.eng.alt;
       $scope.inputstring = "";
       $scope.getLetter = function(letter) {
            $scope.inputstring += letter ;
       };
       $scope.chngLetter = function() {
            $scope.letter = alfa[$scope.language].alf ;
            $scope.language =alfa[$scope.language].alt ;
            if(shift[$scope.shift].alt == 'down')
              { $scope.letter = $scope.letter.toUpperCase(); }
            else 
              { $scope.letter = $scope.letter.toLowerCase(); };
       };
       $scope.chngShift = function() {
            if(shift[$scope.shift].alt == 'up')
              { $scope.letter = $scope.letter.toUpperCase(); }
            else 
              { $scope.letter = $scope.letter.toLowerCase(); };
            $scope.view =  eval(shift[$scope.shift].view);
            $scope.shift =  shift[$scope.shift].alt;
       };
  }]);

})();
</script>
</body>
</html>

Djambulat 30.11.2017 15:26

Спасибо. Ну а так можно ли поменять свой hide так чтобы он не скрывал а применял класс? Просто интересно очень

Dilettante_Pro 30.11.2017 18:56

Djambulat,
Можете писать свои директивы. Ангуларские ломать не стоит. А применяет классы по условию ng-class

ksa 01.12.2017 08:53

Цитата:

Сообщение от Djambulat
Поменять то можно, просто возможно ли осуществить то, что я говорю? Это реально?

Зачем, если есть уже готовое? :blink:


Часовой пояс GMT +3, время: 01:40.