【发布时间】:2018-02-26 13:25:48
【问题描述】:
在我的应用程序中,我不断更新显示的数据,这些数据使用间隔在服务器上更改,该间隔在控制器加载时加载。当我导航到特定站点时,控制器会在时间间隔内与函数一起加载,并且我希望它在我导航到另一个站点时停止。问题是,在使用该网站一段时间后,我最终会运行一堆间隔,而且看起来很讨厌。这是控制器的代码:
angular
.module('myApp')
.controller('TaxiesController', ['$scope', '$location', '$routeParams', '$route', 'dataFactory', '$interval', function ($scope, $location, $routeParams, $route, dataFactory, $interval) {
console.log('TaxiesController loaded')
var cancel = {
name: 'Preklic',
price: 500
}
$scope.taxies = [];
$scope.taxi = {};
$scope.taxi.history = [];
taxi = {}
taxi.history = [];
$scope.getTaxies = () => {
dataFactory.getTaxies().then(function (response) {
$scope.taxies = response.data;
});
}
$scope.getTaxi = () => {
var id = $routeParams.id;
dataFactory.getTaxi(id).then(function (response) {
$scope.taxi = response.data;
});
}
$scope.removeTaxi = (id) => {
dataFactory.removeTaxi(id).then(function (response) {});
}
$scope.getTotal = (taxi) => {
var total = 0;
for (var i = 0; i < taxi.history.length; i++) {
var rent = taxi.history[i];
if (rent.price) total += rent.price;
}
return total;
}
$scope.disableTaxi = (taxi, id) => {
taxi.drivable = false;
dataFactory.updateTaxi(id, taxi).then(function (response) {
$scope.taxi = response.data;
$route.reload();
})
}
$scope.cancelTaxi = (taxi, id) => {
console.log('cancelling..')
taxi.available = true;
taxi.history.unshift(cancel);
dataFactory.updateTaxi(id, taxi).then(function (response) {});
}
var updateTaxies = () => {
console.log('Checking rent length')
dataFactory.getTaxies().then(function (response) {
$scope.taxies = response.data;
});
}
$interval(updateTaxies, 2000);
}]);
【问题讨论】:
-
$scope.onDestroy(() => {$interval.cancel(yourInterval)})
-
我在哪里添加这个?什么是 onDestroy 函数?
-
一般你不需要做这样的事情。 问题是,在使用该网站一段时间后,我最终会运行一堆间隔,而且看起来很糟糕 - 如果这是另一个网站,怎么可能? (考虑到它是在同一个窗口中打开的)。
标签: angularjs intervals angularjs-controller