2016-05-07 2 views
0

Ich habe ein Array von Objektaufruf $ scope.postsATraiter, und ich habe eine Funktion, die einen zufälligen x y -Wert für jeden Beitrag geben.Ändern der Objektposition mit AngularJS funktioniert nur einmal

$scope.posAleatoire = function() { 
     var w = window.innerWidth; 
     var h = window.innerHeight; 
     for (var i = 0; i < $scope.postsATraiter.length; i++) { 
      var l = parseInt(Math.random() * (w - 200)); 
      var t = parseInt(Math.random() * (h - 200)); 
      $('#target'+i).css({ 
       'left': l + 'px', 
       'top': t + 'px', 
       'height' : '200px' 
      }) 
     } 
    } 

Dies funktioniert aber nur, wenn ich es in dieser Funktion:

Posts.query({}, function() { 
    $scope.postsATraiter = $scope.posts; 
    $scope.posAleatoire(); 
}); 

Dieser Funktionsaufruf ist vor jedem, und sie in meiner Datenbank, die alle Post erhalten und speichern sie in Umfang $ .postsATraiter, wenn ich posAleatoire an einer anderen Stelle in meinem Code verwende tut es nichts, warum?

Ich poste den HTML, wenn es helfen kann.

<div ng-repeat="post in posts track by post._id"> 
    <div id="target{{$index}}"> 

Antwort

0

Es ist, weil $scope.posAleatoire() auf $scope.postsATraiter abhängig ist, so dass, warum, wenn Sie $scope.posAleatoire() außerhalb dieser Funktion rufen Sie wurden Werte $scope.postsATraiter zuweisen, funktioniert nicht.

Vor dem Aufruf $scope.posAleatoire() müssen Sie varifizieren, dass $scope.postsATraiter einige Werte hat.

+0

das ist seltsam, weil ich einige andere Funktionen mit '$ scope.postsATraiter'verwenden und ich brauche keine Werte zu überprüfen und die anderen Funktionen funktionieren gut, ich weiß nicht, aber vielleicht der Fehler kommt von der Änderung der CSS – Vodet

Verwandte Themen