我有一个控制器,我预计,它将包含唯一数据,收集如下:
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>
有没有办法防止这种情况并且只存储了最近捕获的数据?
答案 0 :(得分:1)
当控制器被销毁时,您需要清除间隔,否则它将继续运行。
app.controller('SomeCtrl', ['$scope', function($scope) {
var interval = setInterval(function() {
console.log('whatever')
}, 2000);
$scope.$on('$destroy', function() {
clearInterval(interval);
});
}]);