将控制器之间的数据存储为uique

时间:2017-12-07 00:00:43

标签: javascript angularjs setinterval

我有一个控制器,我预计,它将包含唯一数据,收集如下:

        setInterval(function() {

            dataStorage.setData('maxTime',maxTime);
            dataStorage.setData('currentTime',currentTime);
            dataStorage.setData('previousTime',previousTime);

            var dMaxTime = dataStorage.getData('maxTime');
            var dCurrentTime = dataStorage.getData('currentTime');
            var dPreviousTime = dataStorage.getData('previousTime');

            $log.debug("Max time  " + dMaxTime);
            $log.debug("Current time " + dCurrentTime);
            $log.debug("Previous time " + dPreviousTime)

        }, 2000);   

使用简单工厂在控制器之间捕获数据

myApp.factory('dataStorage', [function() {

    var dataInfo = [];

    return {

        setData: function (key, data) {
            dataInfo[key] = data;
        },
        getData: function (key) {
            return dataInfo[key];
        }

    };
}]);

但是当我来回查看上面第一个代码的视图时,它会再次存储相同的变量,但会有不同的(更新后的值),然后在日志中显示它们与控制器的视图被击中的次数。 / p>

有没有办法防止这种情况并且只存储了最近捕获的数据?

1 个答案:

答案 0 :(得分:1)

当控制器被销毁时,您需要清除间隔,否则它将继续运行。

app.controller('SomeCtrl', ['$scope', function($scope) {

  var interval = setInterval(function() {
    console.log('whatever')
  }, 2000);

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

}]);