¡Esta es una revisión vieja del documento!


5.7 Ejemplo de filtro

Para acabar esta unidad vamos a crear un nuevo filtro llamado filteri18n cuyo funcionamiento similar al del filtro filter pero de forma que permita filtrar independientemente de los acentos, diéresis, etc. Este nuevo filtro lo aplicaremos al ejemplo de seguros médicos.

Para crear el nuevo filtro filteri18n vamos a usar un truco que nos permitirá heredar del filtro filter original pero aumentando su funcionalidad. De esta forma nos ahorraremos mucho trabajo.

El truco consiste en que desde nuestro filtro filteri18n , en JavaScript, llamaremos al filtro filter original pero en dicha llamada le pasaremos siempre una función de comparación que no tenga en cuenta las diferencias de acentos, diéresis, etc.

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.1408027965.txt.gz · Última modificación: 2014/08/14 16:52 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