如何删除AngularJS绑定中的所有字符串空格?

时间:2014-10-07 09:29:57

标签: angularjs

我尝试这样做:

<div id="{{mystring.replace(/[\s]/g, \'\')}}"></div>

但它不起作用。 &#34; MyString的&#34;是$scope上的一个对象,字符串类似于&#34;我的字符串是&#34;我希望从视图中删除空格。

7 个答案:

答案 0 :(得分:48)

只需创建专用过滤器:

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

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

并称之为:

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

答案 1 :(得分:26)

如果您只需要在一两个地方使用它,则拆分和加入可能更容易:

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

您可以在模板中执行此操作:

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

你会得到:

my string is: thisisastringwithoutspaces

另一种提到的方法是正则表达式版本(&#39; g&#39;用于全局):

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

我想重点是你可以对表达式中的字符串做任何你想做的事情。这些示例是关于Angular脏检查的不良约定。在Angular中,绑定函数(string.replace,string.split)在绑定到模板表达式时以不同的方式与指定值(字符串,布尔值)进行求值。必须在Angular知道是否更新DOM之前评估绑定函数的结果。这可能比大型应用程序昂贵。我建议使用另一个变量来跟踪不间隔的值:

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

HTML:

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

这样,当触发摘要循环时,Angular将检查noSpaces是否已更改,而不是评估boundString.replace(/ / g,&#39;&#39;)。

如果你正在重复怎么办?好问题。

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>

答案 2 :(得分:7)

提到的指令效果很好。但是,如果要删除较小文本的空格,可以使用

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

这取代了与.replace(" ","")不同的完整空格,而ng-repeat仅取代了第一个空格。

答案 3 :(得分:3)

您可以使用replace()

将所有空格替换为空白
.replace(" ","")

答案 4 :(得分:2)

{{ string.trim() }}怎么样?

Source

答案 5 :(得分:1)

您可以使用replace()

来完成此操作
{{mystring.replace(" ","")}}

我希望如此。

答案 6 :(得分:0)

removeSpaces() {
  originalText ="hi! here i'm";
  removedSpacesText = originalText.split(" ").join("");
}