Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS/Bootstrap CSS:错误的面板在ng repeat中对齐为2列_Css_Angularjs_Twitter Bootstrap 3 - Fatal编程技术网

AngularJS/Bootstrap CSS:错误的面板在ng repeat中对齐为2列

AngularJS/Bootstrap CSS:错误的面板在ng repeat中对齐为2列,css,angularjs,twitter-bootstrap-3,Css,Angularjs,Twitter Bootstrap 3,我对AngularJS的引导面板有问题。 我无法正确对齐面板。我想将面板显示为两列 我有以下HTML代码: <div class="row"> <div class="col-lg-3 col-sm-3 col-xs-3"> <span>Some stuffs</span> </div> <div class="col-lg-9 col-sm-9 col-xs-9"> <div class=

我对AngularJS的引导面板有问题。 我无法正确对齐面板。我想将面板显示为两列

我有以下HTML代码:

<div class="row">
  <div class="col-lg-3 col-sm-3 col-xs-3">
    <span>Some stuffs</span>
  </div>
  <div class="col-lg-9 col-sm-9 col-xs-9">
    <div class="row">
       <div class="col-lg-6 col-sm-6 col-xs-6"
            ng-repeat="i in items">
         <div  class="panel panel-default">
          <div class="panel-heading">
            <h3 class="panel-title">{{i.title}}</h3>
          </div>
          <div class="panel-body">
            {{i.content}}
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

一些东西
{{i.title}}
{{i.content}}
基本情况: 比如说,我有3项。 前两项将显示在第一行中。 -项目1:行0/col0 -项目2:行0/col1 最后一项应显示在第二行和第一列 -项目3:第1行/第0列

当面板的高度相同时,它可以正常工作

我的用例: 我的面板内容可以彼此不同。 因此,当我的第一个面板内容比其他面板内容大时,第三个项目进入col1。 -项目3:第1行/第1列

它留下了一个很大的空间,如果我想添加第四项…它会变得很难看:(

我已经创建了一个演示,展示了这个问题:


//您的面板内容在这里
.clear_right{clear:right;}
.clear_right:在{content::;display:block;}

我能想到的正确显示第3个div(无论大小)的唯一解决方案是,在前2个div中使用一行,在下2个div中使用另一行(依此类推)。您可以通过将ng repeat迭代放在row div之外,并在迭代在add元素上时有条件地分配row类来实现这一点

<div ng-repeat="i in items">
    <div ng-if="$even" class="row">
      <div class="col-lg-6 col-sm-6 col-xs-6">
        <div class="panel panel-default">
          <div class="panel-heading">
            <h3 class="panel-title">{{i.title}}</h3>
          </div>
          <div class="panel-body">
            {{i.content}}
          </div>
        </div>
      </div>
      <div class="col-lg-6 col-sm-6 col-xs-6" ng-if="items[$index + 1]">
        <div class="panel panel-default">
          <div class="panel-heading">
            <h3 class="panel-title">{{items[$index + 1].title}}</h3>
          </div>
          <div class="panel-body">
            {{items[$index + 1].content}}
          </div>
        </div>
      </div>
    </div>
</div>

{{i.title}}
{{i.content}}
{{items[$index+1].title}
{{items[$index+1].content}
当然,缺点是复制列的标记(显示实际窗格的标记),如果您为该部分创建一个指令,这是可以避免的。我知道Exlord的解决方案更简单,但是我觉得这更接近角度/引导方式,因为否则您将通过“强制”行的列在多行中打断(使用clear:right)来有效覆盖引导的行系统


请参见此处更新的plunkr:

@Christina:很好的解决方案,但您丢失了作用域。在我的复杂模板html中,我需要访问父作用域。 我将指令更改为构建从父级继承的新范围,请参见plunker fork

更新03.06.15:

如果添加或删除项,{$index+1}}解决方案将导致问题。在这种情况下,anguluar在数据绑定方面遇到问题,并且不会将视图更新到修改后的集合

现在我用一个简单的方法解决了这个问题

   <div ng-if="$even" style="clear: both;"></div> 

在ng重复块中

 <div ng-repeat="item in myItems">
      <div ng-if="$even" style="clear: both;"></div>
      <item-content /> <!-- directive that adds the content for each item ( or direct html if you want)-->
 </div>


这不是gana的工作,现在每个列都在2个div中,没有float@Exlord在阅读了你的评论后,我明白了你的观点,但奇怪的是,它实际上正在发挥作用。我正在审查它,看看是否能找到更好的方法来实现我的建议。如果你对所有列的高度都相同没有异议,那么我建议你这样做使用此指令:。它将所有容器的高度设置为相同(最大值)。谢谢!它工作正常
   <div ng-if="$even" style="clear: both;"></div> 
 <div ng-repeat="item in myItems">
      <div ng-if="$even" style="clear: both;"></div>
      <item-content /> <!-- directive that adds the content for each item ( or direct html if you want)-->
 </div>