Herramientas de usuario

Herramientas del sitio


unidades:04_masdirectivas:10_ngclass

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Próxima revisión
Revisión previa
unidades:04_masdirectivas:10_ngclass [2014/07/31 22:39] – creado adminunidades:04_masdirectivas:10_ngclass [2014/08/30 09:52] (actual) – admin
Línea 1: Línea 1:
 ====== 4.10 ng-class ====== ====== 4.10 ng-class ======
 +La directiva ''ng-class'' permite de una forma sencilla añadir y quitar clases CSS a un tag. 
  
 +La forma de hacerlo es mediante un objeto JavaScript que esté en el ''$scope''. En dicho objeto , el nombre de cada propiedad será el nombre de una clase CSS. Si el valor de dicha propiedad es ''true'' se añadirá la clase CSS al tag y si está a ''false'' se quitará su clase CSS del tag.
 +
 +Veamos un ejemplo:
 +
 +Los estilos css serán los siguientes:
 +<sxh css>
 +    .rojo {
 +      color:red;
 +    }
 +    .subrayado {
 +      text-decoration: line-through;
 +    }
 +    .negrita {
 +      font-weight: bold;
 +    }
 +</sxh>
 +
 +<sxh js;highlight: [4]>
 +var app = angular.module("app", []);
 +   
 +app.controller("PruebaController", function($scope) {
 +  $scope.clasesCss={
 +    rojo:true,
 +    subrayado:true,
 +    negrita:false
 +  }
 +});
 +</sxh>
 +
 +  * Línea 4: Se declara la propiedad "clasesCss" que contiene 3 propiedades, una por cada uno de las 3 clases CSS. Sólo están a ''true'' las propiedades ''rojo'' y ''subrayado'' por lo que sólo se aplicarán estas 2 clases CSS al elemento.
 +
 +<sxh html>
 +<div ng-class="clasesCss">Este es un texto con clases dinámicas</div>
 +</sxh>
 +
 +Ahora al aplicar la directiva ''ng-class'' al tag ''<div>'' se aplicarán las clases CSS "rojo" y "subrayado".
 +
 +Pero ahora todo ésto tiene una ventaja. Al ser valores del $scope los podemos modificar desde AngularJS y automáticamente se modificarán las clases CSS.
 +
 +Ahora podemos añadir los siguientes tags <input> para modificar desde la propia página las clases CSS que se aplican:
 +
 +<sxh html>
 +  <input ng-model="clasesCss.rojo" type="checkbox">Aplicar estilo Rojo
 +  <br>
 +  <input ng-model="clasesCss.subrayado"  type="checkbox">Aplicar estilo Subrayado
 +  <br>
 +  <input ng-model="clasesCss.negrita"  type="checkbox">Aplicar estilo Negrita  
 +  <br>
 +</sxh>
 +
 +Gracias a estos "checkbox" podemos fácilmente modificar qué estilos se aplican a un tag HTML.
 +
 +<note>
 +AngularJS soporta también que en vez de ser la propiedad del ''$scope'' un objeto con las clases sea también un array con el nombre de las clases CSS o un único String con los nombres de las clases separadas por espacios.
 +
 +Sin embargo, estas 2 formas las veo menos útiles que la que he explicado, pero por supuesto pueden ser mas cómodas de usar según la ocasión.
 +</note>
  
 ===== Ejemplo ===== ===== Ejemplo =====
 +El código completo del ejemplo es:
  
-{{url>http://embed.plnkr.co/pe2RVo}}+<sxh css;title:style.css> 
 +.rojo { 
 +  color: red; 
 +} 
 +.subrayado { 
 +  text-decoration: line-through; 
 +} 
 +.negrita { 
 +  font-weight: bold; 
 +} 
 +</sxh>
  
 +<sxh html;title:index.html;highlight: [17]>
 +<!DOCTYPE html>
 +<html ng-app="app">
 +<head>
 +  <link rel="stylesheet" href="style.css">
 +  <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.19/angular.js"></script>
 +  <script src="script.js"></script>
 +</head>
 +<body ng-controller="PruebaController">
  
 +  <input ng-model="clasesCss.rojo" type="checkbox">Aplicar estilo Rojo
 +  <br>
 +  <input ng-model="clasesCss.subrayado"  type="checkbox">Aplicar estilo Subrayado
 +  <br>
 +  <input ng-model="clasesCss.negrita"  type="checkbox">Aplicar estilo Negrita  
 +  <br>
 +  <br>
 +  <div ng-class="clasesCss">Este es un texto con clases dinámicas</div>
 +
 +</body>
 +</html>
 +</sxh>
 +
 +  * Linea 17: Con la directiva ''ng-class'' se indica el nombre de la propiedad que contiene las clases a mostrar.
 +
 +<sxh js;title:script.js;highlight: [4,5,6,7,8]>
 +var app = angular.module("app", []);
 +   
 +app.controller("PruebaController", function($scope) {
 +  $scope.clasesCss={
 +    rojo:true,
 +    subrayado:true,
 +    negrita:false
 +  }
 +});
 +</sxh>
 +
 +  * Linea 4: El objeto con las clases que pueden o no añadirse al tag HTML
 +
 +{{url>http://embed.plnkr.co/pe2RVo}}
 ===== Referencias ===== ===== Referencias =====
   * [[https://docs.angularjs.org/api/ng/directive/ngClass|ng-class]]   * [[https://docs.angularjs.org/api/ng/directive/ngClass|ng-class]]
unidades/04_masdirectivas/10_ngclass.1406839180.txt.gz · Última modificación: por admin