¡Esta es una revisión vieja del documento!


5.7 Ejemplo de filtro

Para acabar esta unidad vamos a crear un nuevo filtro como filter en el ejemplo de seguros para permitir filtrar independientemente de los acentos, diéresis, etc.

Lo primero es crear el nuevo filtro, como ya comentamos es tan sencillo como incluir una función de comparación en filter pero no queremos tener que acordarnos siempre de ponerlo así que vamos a crear un nuevo filtro llamado filteri18n.

Este filtro para tener la misma funcionalidad que filter pero sin tener que reprogramarla le vamos a inyectar el servicio de filter. Es decir lo que vamos a simular es la herencia de filtros para aumentar su funcionalidad . Este truco nos podría servir para cualquier otro filtro que queramos crear.

Veamos como queda el filtro:

app.filter("filteri18n",["$filter",function($filter) {
  var filterFn=$filter("filter");
  
  /** Transforma el texto quitando todos los acentos diéresis, etc. **/
  function normalize(texto) {
    texto = texto.replace(/[áàäâ]/g, "a");
    texto = texto.replace(/[éèëê]/g, "e");
    texto = texto.replace(/[íìïî]/g, "i");
    texto = texto.replace(/[óòôö]/g, "o");
    texto = texto.replace(/[úùüü]/g, "u");
    texto = texto.toUpperCase();
    return texto;
  }
   
  /** Esta función es el comparator en el filter **/
  function comparator(actual, expected) {
      if (normalize(actual).indexOf(normalize(expected))>=0) {
        return true;
      } else {
        return false;
      }
  }
  
  /** Este es realmente el filtro **/
  function filteri18n(array,expression) {
    //Lo único que hace es llamar al filter original pero pasado
    //la nueva función de comparator
    return filterFn(array,expression,comparator)
  }
  
  return filteri18n;
  
}]);

unidades/05_filtros/07_ejemploseguro.1407886086.txt.gz · Última modificación: 2014/08/13 01:28 por admin
Ir hasta arriba
CC Attribution-Share Alike 3.0 Unported
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0