Làm cách nào để sử dụng ng-repeat like for trong Javascript?
thí dụ:
<div ng-repeat="4">Text</div>
Tôi muốn lặp lại với ng-repeat 4 lần nhưng tôi có thể làm thế nào?
Làm cách nào để sử dụng ng-repeat like for trong Javascript?
thí dụ:
<div ng-repeat="4">Text</div>
Tôi muốn lặp lại với ng-repeat 4 lần nhưng tôi có thể làm thế nào?
items
.. là gì?
Câu trả lời:
Angular đi kèm với bộ lọc limitTo: limit, nó hỗ trợ giới hạn x mục đầu tiên và x mục cuối cùng:
<div ng-repeat="item in items|limitTo:4">{{item}}</div>
items
Đây là cách giải quyết đơn giản nhất mà tôi có thể nghĩ ra.
<span ng-repeat="n in [].constructor(5) track by $index">
{{$index}}
</span>
Đây là một ví dụ về Plunker.
Error: [$parse:isecfld]
Bạn có thể sử dụng phương thức lát cắt trong đối tượng mảng javascript
<div ng-repeat="item in items.slice(0, 4)">{{item}}</div>
Ngắn gọn
item in items|limitTo:4
trong html:
<div ng-repeat="t in getTimes(4)">text</div>
và trong bộ điều khiển:
$scope.getTimes=function(n){
return new Array(n);
};
http://plnkr.co/edit/j5kNLY4Xr43CzcjM1gkj
BIÊN TẬP :
với anglejs> 1.2.x
<div ng-repeat="t in getTimes(4) track by $index">TEXT</div>
t in [1,2,3,4]
hoặc t in 'aaaa'
vv :)
[1,2,3,4]
.. Thật là một giải pháp ảm đạm này một
Câu trả lời do @mpm đưa ra không hoạt động, nó gây ra lỗi
Các bản sao trong bộ lặp không được phép. Sử dụng biểu thức 'theo dõi theo' để chỉ định các khóa duy nhất. Bộ lặp: {0}, Khóa trùng lặp: {1}
Để tránh điều này cùng với
ng-repeat = "t trong getTimes (4)"
sử dụng
theo dõi theo $ index
như thế này
<div ng-repeat = "t in getTimes (4) track by $ index"> TEXT </div>
Để lặp lại 7 lần, cố gắng sử dụng một một mảng với chiều dài = 7 , sau đó theo dõi nó bằng $ index :
<span ng-repeat="a in (((b=[]).length=7)&&b) track by $index" ng-bind="$index + 1 + ', '"></span>
b=[]
tạo một Mảng «b» trống,
.length=7
đặt kích thước của nó là «7»,
&&b
để cho Mảng «b» mới có sẵn cho ng-repeat,
track by $index
trong đó «$ index» là vị trí của phép lặp.
ng-bind="$index + 1"
hiển thị bắt đầu từ 1.
Để lặp lại X lần:
chỉ cần thay thế 7 bởi X .
Tất cả các câu trả lời ở đây dường như giả định rằng các mục là một mảng. Tuy nhiên, trong AngularJS, nó cũng có thể là một đối tượng. Trong trường hợp đó, không lọc với limitTo hay array.slice sẽ hoạt động. Là một trong những giải pháp khả thi, bạn có thể chuyển đổi đối tượng của mình thành một mảng, nếu bạn không ngại mất các khóa đối tượng. Dưới đây là một ví dụ về bộ lọc để thực hiện điều đó:
myFilter.filter('obj2arr', function() {
return function(obj) {
if (typeof obj === 'object') {
var arr = [], i = 0, key;
for( key in obj ) {
arr[i] = obj[key];
i++;
}
return arr;
}
else {
return obj;
}
};
});
Khi nó là một mảng, hãy sử dụng slice hoặc limitTo, như đã nêu trong các câu trả lời khác.