AngularJS ng-repeat溢出

时间:2014-11-12 06:13:15

标签: javascript html css angularjs angularjs-ng-repeat

我正在尝试在固定宽度的容器中输出html锚点。当使用angular的ng-repeat时,链接溢出容器外部。以下是ng-repeat的代码片段。有关溢出的示例,请参阅jsfiddle。

http://jsfiddle.net/n1Lkybwf/2/

<div style="width: 200px; padding: 5px; border: solid 3px #000;">
    <a ng-repeat="tag in tags" style="margin-right: 5px;">{{tag}}</a>
</div>

5 个答案:

答案 0 :(得分:4)

问题是在呈现DOM之前计算容器的宽度(DOM呈现是异步的)。在Angular中,这是正在发生的事情......

默认情况下,锚标记显示为内联块,而简单div显示为块。 这就是为什么解决方案是重复 div 而不是锚标记,然后通过使用display:inline-block为div设置样式来修复块显示。

  <div class="tag" ng-repeat="tag in tags" style="display:inline-block;">
    <a  style="margin-right: 5px;">{{tag}}</a>
  </div>

这是一个工作小提琴:http://jsfiddle.net/9zhc3bqu/

答案 1 :(得分:1)

您可以添加div并将ng-repeat放在div上,如下所示

<div ng-controller="MyCtrl">
    <div style="width: 200px; padding: 5px; border: solid 3px #000;">
        <div ng-repeat="tag in tags">
        <a  style="margin-right: 5px;">{{tag}}</a>
        </div>
    </div>

     <div style="width: 200px; padding: 5px; border: solid 3px #000; margin-top: 10px;">
         <a style="margin-right: 5px;">sampletag1</a>
         <a style="margin-right: 5px;">sampletag2</a>
         <a style="margin-right: 5px;">sampletag3</a>
         <a style="margin-right: 5px;">sampletag4</a>
    </div>
</div>

答案 2 :(得分:0)

可以使用滚动条隐藏溢出部分

<div ng-controller="MyCtrl">
    <div style="overflow-y : scroll;width: 200px; padding: 5px; border: solid 3px #000;">
        <a ng-repeat="tag in tags" style="margin-right: 5px;">{{tag}}</a>
    </div>

     <div style="width: 200px; padding: 5px; border: solid 3px #000; margin-top: 10px;">
         <a style="margin-right: 5px;">sampletag1</a>
         <a style="margin-right: 5px;">sampletag2</a>
         <a style="margin-right: 5px;">sampletag3</a>
         <a style="margin-right: 5px;">sampletag4</a>
    </div>
</div>

或者<br/>代码可能会这样做。

<div ng-controller="MyCtrl">
    <div style="overflow-y : scroll;width: 200px; padding: 5px; border: solid 3px #000;">
        <a ng-repeat="tag in tags" style="margin-right: 5px;">{{tag}}<br/></a>
    </div>

     <div style="width: 200px; padding: 5px; border: solid 3px #000; margin-top: 10px;">
         <a style="margin-right: 5px;">sampletag1</a>
         <a style="margin-right: 5px;">sampletag2</a>
         <a style="margin-right: 5px;">sampletag3</a>
         <a style="margin-right: 5px;">sampletag4</a>
    </div>
</div>

答案 3 :(得分:0)

你有固定宽度(200px),这就是容器为什么要用内部元素扩展的原因。

如果希望容器随元素一起展开,则应删除宽度,然后更改显示。

http://jsfiddle.net/cmbnyack/1/

或者Bhaskor Jyoti Sarmah建议overflow:scroll;

答案 4 :(得分:0)

试试这个

<div ng-controller="MyCtrl">
    <div style="width: 200px; padding: 5px; border: solid 3px #000;">
        <a ng-repeat="tag in tags" style="margin-right: 5px;">
            <span ng-if="(tags_inx%2) != 0">
            {{tag}}
</span>
            <span ng-if="(tags_inx%2) == 0">
            {{tag}}<br/>
</span>
</a>
    </div>

     <div style="width: 200px; padding: 5px; border: solid 3px #000; margin-top: 10px;">
         <a style="margin-right: 5px;">sampletag1</a>
         <a style="margin-right: 5px;">sampletag2</a>
         <a style="margin-right: 5px;">sampletag3</a>
         <a style="margin-right: 5px;">sampletag4</a>
    </div>
</div>