2016-03-08 7 views
-1

我正在製作一個基本的瑣事應用程序,並且我從客戶端收到的JSON數據不允許我重複瑣事頁面。我有六個靜態元素,它們根據前一頁中的過濾數據(類別選擇等)顯示我的選擇。如果不隨機排列這些元素,獲勝的選擇總是在同一個地方。(AngularJS)如何在沒有ng-repeat的情況下隨機排列div中的兒童

我想在Flex中使用Flexbox的「order」屬性來完成此操作。我想生成1到6之間的隨機數,然後將它們分配給每個選項。我在想ng-style會是我的朋友,我可以簡單地爲每個選項調用一個函數,這個函數會吐出一個1到6之間的隨機數,並將CSS順序屬性分配給該隨機數。

我已經能夠在每個選項上調用一個函數,但是它爲每個元素分配了相同的「隨機」數字,這沒有任何幫助。我基本上想做類似以下的事情,但它會拋出無限的摘要循環錯誤或「a.replace不是函數」錯誤。

如果有人能夠幫助我,我將會無限開心。謝謝!!

AngularJS:

$scope.randomOrder = function(){ 
     $scope.randomNum = Math.floor(Math.random() * 6) + 1; 
     return{ 
      "order": $scope.randomNum 
     } 
    } 

HTML:

<div ng-style="randomOrder()"></div> 

回答

0

事情得太多像往常一樣...

我能得到這個工作,使用普通的舊的JS。我想我遇到的一個問題是隨機函數在DOM中的元素被加載之前被調用,所以我設置了一個超時,現在它似乎工作正常。

$scope.randomize = function() { 
    var parent = $(".container"); 
    var divs = parent.children(); 
    while (divs.length) { 
     parent.append(divs.splice(Math.floor(Math.random() * divs.length), 1)[0]); 
    } 
}; 
$timeout(function() { 
    $scope.randomize(); 
}, 0); 
相關問題