benim randomWidth() işlevi ben hala iki kez çağırır benim öğesinden ng-repeat özelliğini kaldırmak bile iki kez arayarak ilgili sorunlar yaşıyorum. Bu sorunu nasıl çözeceğimi anlayamıyorum. Sanırım bunun etrafında bir yol var ya da açık bir şekilde dışarı çıkacağım bir şey var mı?AngularJS ng tarzı iki kez mi çalışıyor?
HTML:
<div id="body-wrapper" ng-app="gallery" ng-controller="mainCtrl">
<section id="sidebar">
<h1>Gallery</h1>
</section>
<main>
<div class="box" ng-repeat="img in imgs" ng-style="{'width': randomWidth()}">
<div class="box-wrapper"></div>
</div>
</main>
</div>
JavaScript:
angular.module('gallery', [])
.controller('mainCtrl', function($scope){
$scope.imgs = [
{
title: 'image1'
},
{
title: 'image2'
},
{
title: 'image3'
},
{
title: 'image4'
},
{
title: 'image5'
},
{
title: 'image6'
}
];
$scope.randomWidth = function(){
const widths = ['25%', '33%', '40%', '50%'];
const max = widths.length;
const min = 0;
var r = Math.floor(Math.random() * (max - min)) + min;
console.log(widths[r]);
return widths[r];
}
})
canlı kodu: http://codepen.io/daviddiefenderfer/pen/qZpqdK
anlatıyor? RandomWidth'in iki kez çağrıldığına dair herhangi bir belirti görmüyorum. Sert bir yenileme yaptın mı? –
Her bir döngü döngüsünde tt çağrılacağını düşünüyorum - Konsoldaki hatalara bir bakın. –
Alon'un dediği gibi, yanlış bir şekilde 'ng-style'ın' randomWidth() 'yi yalnızca bir kez değerlendireceğini varsayıyorsunuz. Durum bu değil. "ng-style", sonuçta ortaya çıkan değerin değişmiş olabileceğinden şüphelenmek için bir sebep olduğunda yeniden değerlendirecektir. Rasgele genişlikleri önceden kontrol etmeli ve sabitlenmesini istiyorsanız, bunları '$ scope' üzerinde özellik olarak atamalısınız. – Oliver