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

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
unidades:04_masdirectivas:10_ngclass [2014/08/01 00:11] – adminunidades:04_masdirectivas:10_ngclass [2014/08/30 09:52] (actual) – admin
Línea 4: Línea 4:
 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. 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 suponiendo que existen los siguientes estilos:+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]> <sxh js;highlight: [4]>
Línea 12: Línea 25:
   $scope.clasesCss={   $scope.clasesCss={
     rojo:true,     rojo:true,
-    subrayado:false, +    subrayado:true, 
-    negrita:true+    negrita:false
   }   }
 }); });
 </sxh> </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.1406844681.txt.gz · Última modificación: por admin