2015-05-20 63 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

相关问题