2015-05-20 111 views
2

我有Icon和一個scope.id,每次使用Icon都會分配不同的顏色代碼。 假設每次加載控制器時生成相同的隨機數

angular.module('myAppp').controller('myCtrl',function(){ 
    scope.id=[0,1,2,3]; 
    //generate random number 
    $scope.Icon=[]; 
    for(i=0;i<scope.id.length;i++) { 
     var ran= Math.floor(Math.random()*255)+$scope.id[i]; 
     $scope.Icon.push(ran); 
    } 
}); 

HTML

<div ng-repeat='id in id'> 
    <span style="background-color:rgb({{$scope.Icon[$index]}},255,255)">{{id}}</span> 
</div> 

,所以我想,當我將再次刷新我的網頁應該再得到相同的顏色,但現在它會回來,因爲的Math.random不同顏色()

請建議我或引導我,因爲我是新的。

+2

商店中的localStorage組合並調用該函數只有在localstorage –

+0

本地存儲中找不到該值將在單臺機器上,如果用戶將改變機器,它會產生不同的數字。 ??? –

+0

然後你應該存儲的東西,在一些服務器端實現。在您的服務器上有一個用戶首選項表,存儲所有這些細節。 –

回答

0

您可以使用cookies來存儲當前值。

每次負載頁面檢查是否存在先前存儲的cookie,如果沒有,你分配一個隨機值,並將其存儲在一個的cookie。

每當顏色發生變化時,您必須將值分配給cookie,因此每次用戶加載或重新加載頁面時,如果已有值,則將顏色設置爲cookie中的顏色。

下面是如何在angularjs使用Cookie一個例子:
http://www.tutorialsavvy.com/2014/11/angularjs-cookie-example.html/

+0

如果用戶下次使用不同的機器怎麼辦? –

+0

@ShubhamNigam你應該將顏色存儲在服務器端(數據庫)。您需要考慮成本/收益,因爲該操作更加繁重,每次用戶更改顏色時,都需要將其發送到您的服務器,並在其中存儲它。 –

+0

託尼,一路你是絕對正確的,但服務器端存儲將爲我的方案的問題,因爲我的應用程序在客戶端應用程序,我用谷歌驅動器存儲.. 你可以幫我這個..一些如何我發現每個頁面加載的隨機值相同,但問題是..它不是彩色更多的亮度.. 小提琴: - http://fiddle.jshell.net/xopddsxp/3/ –

0

實施選擇初始種子的隨機數生成算法;它不能由用戶選擇或重置

JavaScript reference。使用預生成的數組數組。

0

這裏是例如在頁加載動態顏色變化:http://fiddle.jshell.net/xopddsxp/

HTML:

<div ng-app="myAppp" ng-controller="myCtrl"> 
    <div ng-repeat='id in id'> 
     <span style="background-color:rgb({{Icon[$index]}},{{Icon[$index +1]}},{{Icon[$index + 2]}})">{{id}}</span> 
    </div> 
</div> 

JS:

var app = angular.module("myAppp", []).controller('myCtrl',function($scope, $http){ 
    $scope.id = [0,1,2,3]; //generate random number 
    $scope.Icon=[]; 
    for(i=0; i < $scope.id.length; i++){ 
     var ran= Math.floor(Math.random()*255)+$scope.id[i]; 
     $scope.Icon.push(ran); 
    } 
}); 
+0

感謝您的小提琴,但在重新加載頁面上,它生成不同的顏色,我希望與每個頁面加載相同的顏色。 –

+0

你的意思是,每個頁面加載相同的顏色對吧? – Ravi

+0

在每一頁加載中都有相同的顏色,請檢查:http://fiddle.jshell.net/xopddsxp/4/ – Ravi

相關問題