Önerileriniz için teşekkürler, beni doğru yoldan buldunuz!
Tam bir açıklama için gidelim:
Varsayılan olarak AngularJS http sorgusu bir nesne döndürür
Yani @Ariel Array.prototype.chunk işlevini kullanmak istiyorsanız, önce nesneyi bir diziye dönüştürmeniz gerekir.
Ve sonra DENETLEYİCİNİZDEKİ yığın işlevini kullanmak, aksi takdirde doğrudan ng-yinelemede kullanılırsa, sizi bir bilgi hatasına götürür . Son kontrolör şunlara bakar:
// Initialize products to empty list
$scope.products = [];
// Load products from config file
$resource("/json/shoppinglist.json").get(function (data_object)
{
// Transform object into array
var data_array =[];
for( var i in data_object ) {
if (typeof data_object[i] === 'object' && data_object[i].hasOwnProperty("name")){
data_array.push(data_object[i]);
}
}
// Chunk Array and apply scope
$scope.products = data_array.chunk(3);
});
Ve HTML şu hale gelir:
<div class="row" ng-repeat="productrow in products">
<div class="col-sm-4" ng-repeat="product in productrow">
Öte yandan, JSON dosyamdan bir nesne {} yerine doğrudan bir dizi [] döndürmeye karar verdim. Bu şekilde, denetleyici olur (lütfen belirli sözdizimine dikkat edin isArray: true ):
// Initialize products to empty list
$scope.products = [];
// Load products from config file
$resource("/json/shoppinglist.json").query({method:'GET', isArray:true}, function (data_array)
{
$scope.products = data_array.chunk(3);
});
HTML yukarıdakiyle aynı kalır.
OPTIMIZATION
Şüpheyle ilgili son soru şudur: chunk işleviyle javascript dizisini genişletmeden% 100 AngularJS nasıl yapılır ... eğer bazı insanlar bize ng-tekrar-başlangıç ve ng-tekrar-sonun gidilecek yol olup olmadığını göstermekle ilgileniyorsa .. . Merak ediyorum ;)
ANDREW'İN ÇÖZÜMÜ
@Andrew sayesinde, artık her üç (veya herhangi bir sayıdaki) öğeye bir bootstrap clearfix sınıfı eklemenin, farklı blok yüksekliğinden gelen görüntü sorununu düzelttiğini biliyoruz.
Böylece HTML şu hale gelir:
<div class="row">
<div ng-repeat="product in products">
<div ng-if="$index % 3 == 0" class="clearfix"></div>
<div class="col-sm-4"> My product descrition with {{product.property}}
Ve kontrol cihazınız kaldırılan parça işlevi ile oldukça yumuşak kalır :
// Initialize products to empty list
$scope.products = [];
// Load products from config file
$resource("/json/shoppinglist.json").query({method:'GET', isArray:true}, function (data_array)
{
//$scope.products = data_array.chunk(3);
$scope.products = data_array;
});