我遇到一個奇怪的問題,那就是用新數據替換了$ rootScope.data.vehicles中的值,但我的舊數據點視圖與新數據一起保持約一秒鐘。
例如,在我用新數組替換$ rootScope.data.vehicles數組後,我的視圖會先顯示3個新值,然後是3箇舊值。 View正在使用ng-repeat在$ rootScope.data.vehicles上顯示切片。
約一秒鐘後,3箇舊值在視圖中不再顯示。
每次時間間隔觸發我得到其次是舊值新值,即使值都沒有改變。
我的控制器和工廠看起來像這樣:
(function() {
var vehiclesInjectParams = ['$location', 'dataService', '$rootScope', 'VehiclesRefreshService'];
var VehiclesController = function ($location, dataService, $rootScope, VehiclesRefreshService) {
var vm = this;
if ($rootScope.data == undefined)
$rootScope.data = {};
$rootScope.data.vehicles = [];
function init() {
dataService.getVehicles()
.then(function (data) {
$rootScope.data.vehicles = data.results;
}, function (error) {
var thisError = error.data.message;
});
VehiclesRefreshService.getValues();
};
init();
};
VehiclesController.$inject = vehiclesInjectParams;
var vehiclesRefreshInjectParams = ['$interval', '$rootScope', '$q', 'dataService'];
var VehiclesRefreshService = function ($interval, $rootScope, $q, dataService) {
var factory = {};
factory.getValues = function() {
var interval = $interval(function() {
dataService.getVehicles()
.then(function (data) {
$rootScope.data.vehicles = data.results;
}, function (error) {
var thisError = error.data.message;
});
}, 10000);
};
return factory;
};
VehiclesRefreshService.$inject = vehiclesRefreshInjectParams;
angular.module('teleAiDiagnostics').controller('VehiclesController', VehiclesController).factory('VehiclesRefreshService', VehiclesRefreshService);
}());
首先我加載陣列然後我啓動$間隔定時器,刷新值每隔10秒。只要dataService返回新的值列表並將它們放入$ rootScope.data.vehicles中,我會注意到六個貼圖,而不是3個。之後,我只剩下3個新的貼圖。
我的觀點看起來像這樣:
<header>
<h1>Vehicles</h1>
</header>
<article class="icon-gallery flexslider">
<section>
<figure ng-repeat="vehicle in $parent.data.vehicles" class="gallery-item svg">
<a class="nextpage" ng-href="#!/vehicle/{{vehicle.vehicleID}}">
<img src="img/machine/01.svg" alt="">
<span class="green-machine-code">{{vehicle.id}}</span>
</a>
<ul>
<li>{{vehicle.id}}</li>
<li>{{vehicle.ip}}</li>
<li>Online: {{vehicle.online}}</li>
<li>Status: {{vehicle.status}}</li>
<li>AllClear: {{vehicle.allClear}}</li>
</ul>
</figure>
</section>
</article>
任何想法,如何讓我的瓷磚無縫刷新?所有的幫助非常感謝。
只是一種預感,而是嘗試通過$指數將跟蹤你的NG-重複。另外,如果你實際上用每次迭代來更新數組,而不是覆蓋所有的值,我認爲你的界面看起來會更少跳躍和更清晰。 –
那麼你爲什麼使用'$ rootScope'?我認爲使用'$ scope'只會讓你的代碼更具可讀性和可管理性。另外,什麼是'dataService',它有什麼作用? –
Mike Feltman你是贏家!這絕對解決了我的問題。太感謝了。我認爲你應該將此作爲這個問題的答案發布,並且將其標記爲這樣。 – Ian