jeśli po prostu potrzebujesz go w jednym lub dwóch miejscach, łatwiej podzielić i dołączyć:
$scope.boundString = 'this is a string with spaces'
z tym można zrobić w szablonie:
<span>my string is: {{ boundString.split(' ').join('') }}</span>
i co można uzyskać:
my string is: thisisastringwithoutspaces
inne podejście, które zostało wymienione jest wersja regex ('g' jest dla globalnego):
<span>my string is: {{ boundString.replace(/ /g, '') }}</span>
Chyba punkt i s, że możesz zrobić, co chcesz, do ciągu znaków w wyrażeniu. Te przykłady są złą konwencją w odniesieniu do kątowego sprawdzania brudu. W Angularie funkcje bound (string.replace, string.split) otrzymują ocenę przeciwną do określonej wartości (string, boolean) po związaniu z wyrażeniem szablonu. Wynik funkcji związanej musi zostać oceniony zanim Angular wie, czy zaktualizować DOM. Może to być kosztowne w przypadku dużej aplikacji. Proponuję przy użyciu innej zmiennej do śledzenia wartości un rozstawione:
$scope.noSpaces = $scope.boundString.replace(/ /g, '');
HTML:
<span>{{ noSpaces }}</span>
W ten sposób, gdy pętla strawienia jest wyzwalany, kątowe sprawdzi, czy noSpaces zmieniła się, w przeciwieństwie do oceniając boundString.replace (//g, '').
Co jeśli powtórzysz? Dobre pytanie.
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>
[Wyrażenia kątowe] (https://docs.angularjs.org/guide/expression) nie są po prostu javascript. Nie można więc zakładać, że wszystko, co działałoby w kontekście wykonywania javascript, będzie działało również jako wyraz kanciasty. – Yoshi