У меня проблема с моим скриптом, который собирает данные из базы данных по частям. Я хочу сообщить Angular, когда загрузка данных закончена, поэтому я использовал $ watch. К сожалению, это не работает. Функция угловых вызовов начинается в начале, а не после изменения значения загрузки.
angular
.module('app')
.controller('tlmController', function($scope, $http) {
var vm = this;
var data = [];
vm.countTestLines = 0;
vm.loadingComplete = false;
$scope.$watch('vm.loadingComplete', function() {
console.log(data);
});
$http({
method: 'GET',
url: 'app/server/tt/count_testlines.php'
}).then(function successCallback(response) {
vm.countTestLines = parseInt(response.data.count);
downloadInParts(data, 0, vm.countTestLines);
}, function errorCallback(response) {
console.log('error');
});
var downloadInParts = function(data, offset, max) {
if(max < offset) {
vm.loadingComplete = true;
return;
}
$http({
method: 'GET',
url: 'app/server/tt/get_testlines.php',
params: { offset: offset }
}).then(function successCallback(response) {
data = data.concat(response.data);
downloadInParts(data, offset + 5, max);
}, function errorCallback(response) {
console.log('error');
});
}
});
Я не угловатый парень, но вы пытались передать newValue и oldValue в качестве параметра слушателя в метод '$ watch'? И затем в него вы можете проверить 'if (newValue! == oldValue)' и обработать свои изменения. –
Если один из ответов ниже решит вашу проблему, пожалуйста, подумайте о принятии одного из них в качестве ответа. – Danscho