如何在ng-repeat元素后添加空格?

use*_*313 21 javascript css angularjs

使用ng-repeatspan元素添加所有span元件一起的w/o在它们之间的空间从而使其成为一个牢不可破线,其不换行:

码:

<span ng-repeat="label in labels">{{label}}</span> 
Run Code Online (Sandbox Code Playgroud)

渲染html:

<span>label1</span><span>label 2</span><span>label3</span><span>label 3</span><span>label5</span><span>label 4</span>
Run Code Online (Sandbox Code Playgroud)

这不会包含在一个狭窄的div中.

问题:如何包装?

http://jsfiddle.net/supercobra/6e8Bn/

Jus*_*ier 34

我只有标签有同样的问题......这是我的解决方案:

<span ng-repeat-start="label in labels" ng-bind="label"></span> <span ng-repeat-end></span>
Run Code Online (Sandbox Code Playgroud)

基本上重复ng-repeat-start和ng-repeat-end之间的任何内容,包括空格......不幸的是,这意味着使用额外的span标记.不理想......


Tor*_*ott 15

我用css很好地解决了这个问题.只需将跨度更改为display:inline-block,它将正确包裹.

但是,在我的具体情况下,这不起作用.我需要空间,以便元素在text-align:justify应用于它们时能够正常运行(在父级中均匀分隔它们).所以我做了一个指示:

angular.module('whatever')
.directive('addASpaceBetween', [function () {
        'use strict';
        return function (scope, element) {
            if(!scope.$last){
                element.after('&#32;');
            }
        }
    }
]);
Run Code Online (Sandbox Code Playgroud)

然后在html中:

<span data-ng-repeat="(id, thing) in things" data-add-a-space-between>stuff</span>
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的解决方案.像魅力和非常优雅的工作.我只想用'&#32;' 而不是'&nbsp;' 因为NBSP是"不可破坏的"并且会阻止内联(非内联块)元素分离. (2认同)

Pav*_*vel 7

我的解决方案是(注意内跨后的空格字符):

<span ng-repeat="gate in gates"><span class="label label-info">{{gate}}</span> </span>
Run Code Online (Sandbox Code Playgroud)


Jon*_*han 5

@Pavel 的回答对我有帮助,特别是ng-repeat<span>引导标签上使用。它们需要有一个尾随空白,否则它们之间就不会呈现空格。加倍,span这样label label-default班级就不会和窍门一样spanng-repeat

<span ng-repeat="value in values">
  <span class="label label-default">{{value}}</span>
</span>
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/gLmtyfj4/2/


zs2*_*020 0

<span ng-repeat="label in labels">{{label}}<br/></span> 
Run Code Online (Sandbox Code Playgroud)

或者

<div ng-repeat="label in labels">{{label}}</div> 
Run Code Online (Sandbox Code Playgroud)