J'essaie de créer des divs de taille aléatoire de la taille (.childbox) de Twitter Bootstrap à l'aide d'angularjs.
<div ng-controller="HomeCtrl"> <div class="motherBox" ng-repeat="n in news"> <div class="childBox" class="col-md-{{boxSpan}} box"> <a href="#" class="thumbnail"> <img src="{{holderLink}}" height="200px" alt="100x100"> <p class="tBlock"> {{n.title}} </p> </a> </div> </div> </div> controller('HomeCtrl', ['$scope', '$http', function($scope,$http) { $http.get('news/abc.json').success(function(data) { $scope.news = data; }); $scope.holderSize = 150; $scope.holderLink = 'http://placehold.it/'+$scope.holderSize+'x'+$scope.holderSize; $scope.boxSpan = getRandomSpan(); function getRandomSpan(){ return Math.floor((Math.random()*6)+1); }; }])
3 Réponses :
Appelez simplement Ajouter GetRandomspan () Code> Fonction à votre portée et appelez-la dans votre modèle:
$scope.getRandomSpan = function(){
return Math.floor((Math.random()*6)+1);
}
<div ng-controller="HomeCtrl">
<div class="motherBox" ng-repeat="n in news">
<div class="childBox" class="col-md-{{getRandomSpan()}} box">
<a href="#" class="thumbnail">
<img src="{{holderLink}}" height="200px" alt="100x100">
<p class="tBlock"> {{n.title}} </p>
</a>
</div>
</div>
</div>
Cela causera le débordement de la digeste, n'est-ce pas?
Oui, cela le cause dans mon cas.
Pour prévenir le débordement de la Digest: vous pouvez utiliser ng-init = 'rand = getrandomspan ()' code> et dans la classe:
class = "col-md - {{rand}} case" code " >
Autre autre à la réponse acceptée, car vous êtes susceptible de réutiliser cette fonction, vous pouvez le transformer en un filtre pour plus de commodité:
<div ng-controller="HomeCtrl"> <div class="motherBox" ng-repeat="n in news"> <div class="childBox" class="col-md-{{6 | randomize}} box"> <a href="#" class="thumbnail"> <img src="{{holderLink}}" height="200px" alt="100x100"> <p class="tBlock"> {{n.title}} </p> </a> </div> </div> </div>
improvisation de la réponse acceptée pour prévenir le débordement de la digeste:
<div ng-controller="HomeCtrl"> <div class="motherBox" ng-repeat="n in news"> <div class="childBox" ng-init="initRand()" class="col-md-{{getRandomSpan()}} box"> <a href="#" class="thumbnail"> <img src="{{holderLink}}" height="200px" alt="100x100"> <p class="tBlock"> {{n.title}} </p> </a> </div> </div> </div>
Pas besoin d'utiliser la fonction de la portée - à nouveau sera digestible débordement. Il suffit de définir un nouveau val: ng-init = 'rand = initiateur ()' code> et en classe: classe = "Col-MD - {{Rand}} Box"