AngularJS:在ng-repeat的不同循环期间打开和关闭DOM元素

时间:2015-12-11 13:47:36

标签: javascript html angularjs

我想知道是否有可能在ng-repeat的第一个循环期间打开DOM元素并在第二个循环期间关闭它。让我们谈谈一些元素列表,我想连续输出2(或者可能是3,4,无关紧要)。所以结果html将是这样的:

Dim dbs As dao.Database

Set dbs = CurrentDb()

dbs.Execute "INSERT INTO TEMP2 ([Study_Date], [Created_By], [Part_Number], 
[Upper_Tolerance], [Lower_Tolerance], [ID21_Number]) VALUES ([Study_Date], 
[Created_By], [Part_Number], [Upper_Tolerance], [Lower_Tolerance], [ID21_Number]) 
FROM RAC_DATA_ENTRY 
WHERE [RAC_CAP_VALS] = '" & Me.[RAC_CAP_VALS] & "'"

ng-repeat的主要问题不允许我在第一个周期放置行<div class="row"> <!-- add this line during 1sr cycle --> <div class="element">...element1...</div> <div class="element">...element2...</div> </div> <!-- add this line during 2nd cycle --> <div class="row"> <!-- add this line during 3rd cycle --> <div class="element">...element3...</div> <div class="element">...element4...</div> </div><!-- add this line during 4th cycle --> 并在第二个周期放置<div class="row">。 ng-repeat在每个循环中添加它们。是否有可能为这种情况找到一些解决方法?

3 个答案:

答案 0 :(得分:1)

使用ng-repeat是不可能的。您必须在控制器(多维数组)中准备数据结构,或者编写一个自定义指令,以及当前迭代所需的数组元素数量的附加参数。

UPD:您可以使用lodash&#39;块函数将数组拆分为更小的数组https://lodash.com/docs#chunk

答案 1 :(得分:0)

正如您所说,在一个重复周期中,您不能只输出一半元素(例如没有结束标记的开始标记)。

然而,您可以基于$index属性在一个周期中执行不同的操作,例如在第一个周期中显示或隐藏特定元素($ index:0)。

或者,查看ng-repeat-startng-repeat-end以在循环中输出多个元素。更多信息:https://docs.angularjs.org/api/ng/directive/ngRepeat

答案 2 :(得分:0)

我在angularJs中找到了开箱即用的简单解决方案:

<div class="row" ng-repeat="element in elements" ng-if="$index%2==0">
    <div class="element" ng-repeat="element in elements|limitTo:2:$index">...</div>
</div>

它会连续输出2个元素,如果需要更多,你应该调整ng-if和limitTo参数。