【问题标题】:Prevent the wiping of an Array after routing Angular.js在路由 Angular.js 后防止擦除数组
【发布时间】:2022-01-25 16:51:48
【问题描述】:

$interval 服务和 Angualr.js 中的路由有问题 我想浏览抛出页面,我不想丢失另一页上的数据......我会解释......我正在使用库 chart.js 生成一个简单的折线图。 然后我每 5 秒生成一些数据,并将这些数据推送到一个数组中,以帮助我构建图表(如果你知道库你知道我在说什么)。当我路由到另一个页面并且回来时图表消失了,数据都消失了,它从零开始。我能做什么? 这是我的代码...

$(function(){

var myWallet = 1000000000;
var BTCWallet = 0;
var ETHWallet = 0;
var CROWallet = 0;


var app = angular.module("myApp", ["ngRoute","chart.js"]);

/**roting dell'app */
app.config(function($routeProvider,$locationProvider) {
    $locationProvider.hashPrefix(''); 
    $routeProvider
    .when("/dashboard", {
      templateUrl : "dashboard.html"
    })
    .when("/wallet", {
      templateUrl : "wallet.html"
    })
    .when("/trading", {
      templateUrl : "trading.html"
    })
    .when("/home", {
        templateUrl : "home.html"
      })
    ;
  });

/**controller per il timer nella dashboard

 */
app.controller('countCtrl', function($scope, $interval){

   $scope.theTimer = 5;

 var stopTimer = $interval(()=>{

    $scope.theTimer = $scope.theTimer -1;

    if ($scope.theTimer == 0){
    $scope.theTimer = $scope.theTimer +5;
}

    },1000);

    $scope.$on('$destroy', function() {
        $interval.cancel(stopTimer);
});


});


/**
 * Chat setup and options
 */


app.controller("chartCtrl", function($rootScope,$scope,$interval){

    $scope.labels = [];
    $scope.series = ['BTC', 'ETH' , 'CRO'];

    $scope.data = [
      [],[],[]
    ];

   var stopChart = $interval(()=>{
     console.log($scope.data[0].push($rootScope.BTCCoin *1));
    console.log($scope.data[0]);

    $scope.data[1].push($rootScope.ETHCoin *1);
    $scope.data[1];

    $scope.data[2].push($rootScope.CROCoin *1);
    $scope.data[2];

    $scope.ora = new Date();
    var orario = $scope.ora.toLocaleTimeString();

    console.log($scope.labels.push(orario));
    console.log($scope.labels);

    },5000);

    $scope.$on('$destroy', function() {
              $interval.cancel(stopChart);
    });

  });

/**currecy controller */
app.controller('currencyCtrl', function($scope,$rootScope, $interval){

$rootScope.BTCCoin = (Math.random()* 53000).toFixed(2); /* toFixed per scegliere quanti numeri generare dopo la virgola*/
$rootScope.ETHCoin = (Math.random()* 4500).toFixed(2); 
$rootScope.CROCoin = (Math.random()* 49777).toFixed(2);


var stopCurrency = $interval(()=>{

    do{
        $rootScope.BTCCoin = (Math.random()* 53000).toFixed(2);
    }while($rootScope.BTCCoin < 48000);


    do{
        $rootScope.CROCoin = (Math.random()* 49777).toFixed(2);
    }while($rootScope.CROCoin < 3200);

    do{
        $rootScope.ETHCoin = (Math.random()* 4500).toFixed(2);
    }while($rootScope.ETHCoin < 3800);



},5000);

$scope.$on('$destroy', function() {
    $interval.cancel(stopCurrency);
});

})




});

【问题讨论】:

    标签: angularjs routes chart.js


    【解决方案1】:

    当用户离开图表控制器页面时,表格中使用的数据将被删除。当用户返回时,这些数据会重新开始,因此返回时是空表。

    要解决此问题,应在页面离开时将数据表保存在 $scope.data 的服务中。返回时,应从服务中提取数据并返回到 $scope.data。

    你可以试试类似的东西

    // Untested code
    
    app.factory("chartService", function() {
        var chartData;
    
        function saveData(data) {
          chartData = data;          
        }
    
        function getData() {
          return chartData;
        }
    
        return {
          saveData: saveData,
          getData: getData
        };
    });
    
    app.controller("chartCtrl", function($rootScope, $scope, $interval, chartService) {
        var data = chartService.getData();       
        if (data) {
          // Navigating back
          $scope.data = data;
        } else {
           // First visit of the session
           $scope.data = [[],[],[]];
        }
        
         // interval code ...
    
        $scope.$on('$destroy', function() {
              chartService.saveData($scope.data);
              $interval.cancel(stopChart);
        });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-15
      • 1970-01-01
      相关资源
      最近更新 更多