Saltar al contenido

¿Cómo puedo eliminar todos los espacios de cadena en el enlace AngularJS?

Solución:

Simplemente cree un filtro dedicado:

angular.module('filters.stringUtils', [])

.filter('removeSpaces', [function() {
    return function(string) {
        if (!angular.isString(string)) {
            return string;
        }
        return string.replace(/[s]/g, '');
    };
}])

y llámalo como:

<div id="{{'hi there'| removeSpaces}}"></div>

Si simplemente lo necesita en uno o dos lugares, puede ser más fácil dividirlo y unirlo:

$scope.boundString = 'this is a string with spaces'

con eso podrías hacer en tu plantilla:

<span>my string is: {{ boundString.split(' ').join('') }}</span>

y obtendrías:

my string is: thisisastringwithoutspaces

otro enfoque que se ha mencionado es la versión regex (‘g’ es para global):

<span>my string is: {{ boundString.replace(/ /g, '') }}</span>

Supongo que el punto es que puedes hacer lo que quieras con una cadena dentro de una expresión. Estos ejemplos son una mala convención con respecto a la verificación sucia de Angular. En Angular, las funciones vinculadas (string.replace, string.split) se evalúan de manera diferente en oposición a un valor especificado (cadena, booleano) cuando se vinculan a la expresión de una plantilla. El resultado de una función vinculada debe evaluarse antes de que Angular sepa si actualizar o no el DOM. Esto puede resultar costoso en una aplicación de gran tamaño. Sugeriría usar otra variable para rastrear el valor no espaciado:

$scope.noSpaces = $scope.boundString.replace(/ /g, '');

HTML:

<span>{{ noSpaces }}</span>

De esta manera, cuando se activa un bucle de resumen, Angular verificará si noSpaces ha cambiado en lugar de evaluar boundString.replace (/ / g, ”).

¿Qué pasa si estás repitiendo ng? Buena pregunta.

for (var idx = 0, idx < $scope.boundIterable.length, i++) {
    $scope.boundIterable[i].noSpaces = $scope.boundIterable[i].boundString.replace(/ /g, '');
}

HTML:

<ul ng-repeat="iterable in boundIterable">
    <li>{{ iterable.noSpaces }}</li>
</ul>

La directiva mencionada funciona bastante bien. Pero si desea eliminar espacios para textos más pequeños, puede usar

.split(" ").join("")

Esto reemplaza los espacios completos a diferencia de .replace(" ","") que reemplaza solo el primer espacio.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *