基于 ngif 条件的长度的 ng-repeat 限制
ng-repeat limit based on the length with ng-if condtion
<div ng-repeat="badgesData in deptUSersData.badges | limitTo : 7 track by $index">
........content.......
</div>
只有当 deptUSersData.badges.lenght
大于 8 时我才想 limitTo : 7
我该怎么办?
我想要这样的东西:
<div ng-repeat="badgesData in deptUSersData.badges
ng-if=deptUSersData.badges.lenght > 8 ? limitTo : 7 : '' track by $index>
您可以在 controller
中设置一个变量并使用它来限制 ng-repeat
,例如:
<div ng-repeat="badgesData in deptUSersData.badges | limitTo : myLimit track by $index">
........content.......
</div>
app.controller('someController', function($scope) {
if(deptUSersData.badges.lenght > 8)
$scope.myLimit = 7;
}
);
如果 length
小于 8
并且 myLimit
最终成为 undefined
,请不要担心
If limit is undefined, the input will be returned unchanged.
所以过滤器不应该应用并且应该显示所有内容。
为了达到预期的结果,使用 ng-show 条件检查数组长度并使用 $index < 7 限制为 7
ng-show="{{deptUSersData.badges.length > 8? $index < 7: true}}">
代码示例 - https://codepen.io/nagasai/pen/vRRQVw
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.limit = 6;
$scope.deptUSersData = {
badges :[
1,2,3,4,5,6,7,8,9
]
}
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">
<div>
<div ng-repeat="badgesData in deptUSersData.badges track by $index" ng-show="{{deptUSersData.badges.length > 8? $index < 7: true}}">
{{badgesData}}
</div>
</div>
</div>
注意:将数组长度改成8或更少看区别
<div ng-repeat="badgesData in deptUSersData.badges | limitTo : 7 track by $index">
........content.......
</div>
只有当 deptUSersData.badges.lenght
大于 8 时我才想 limitTo : 7
我该怎么办?
我想要这样的东西:
<div ng-repeat="badgesData in deptUSersData.badges
ng-if=deptUSersData.badges.lenght > 8 ? limitTo : 7 : '' track by $index>
您可以在 controller
中设置一个变量并使用它来限制 ng-repeat
,例如:
<div ng-repeat="badgesData in deptUSersData.badges | limitTo : myLimit track by $index">
........content.......
</div>
app.controller('someController', function($scope) {
if(deptUSersData.badges.lenght > 8)
$scope.myLimit = 7;
}
);
如果 length
小于 8
并且 myLimit
最终成为 undefined
If limit is undefined, the input will be returned unchanged.
所以过滤器不应该应用并且应该显示所有内容。
为了达到预期的结果,使用 ng-show 条件检查数组长度并使用 $index < 7 限制为 7
ng-show="{{deptUSersData.badges.length > 8? $index < 7: true}}">
代码示例 - https://codepen.io/nagasai/pen/vRRQVw
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.limit = 6;
$scope.deptUSersData = {
badges :[
1,2,3,4,5,6,7,8,9
]
}
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">
<div>
<div ng-repeat="badgesData in deptUSersData.badges track by $index" ng-show="{{deptUSersData.badges.length > 8? $index < 7: true}}">
{{badgesData}}
</div>
</div>
</div>
注意:将数组长度改成8或更少看区别