Это только в Internet Explorer.
У меня есть фабрика, которая предоставляет уведомления для моего приложения.
Входными данными для этих уведомлений является файл (qc.sta), который автоматически создается сторонним программным обеспечением и помещается в определенную папку.
Когда этот файл существует, в приложение добавляется новое уведомление.
Мой механизм должен был бы получить данные из этого файла qc.sta и затем удалить их после сбора данных.
Чтобы удалить файл, мне нужно выполнить PHP, который удаляет файл, но, похоже, это нужно сделать внутри $ http.get, поэтому я получаю $ http.get внутри другого $ http.get.
Что происходит, так это то, что уведомления (запускаемые через $ интервал внутри контроллера) продолжают появляться постоянно, несмотря на удаление файла.
Моя фабрика, как показано ниже:
myApp.factory("qcSTA", function ($http, $q) {
return {
apiPath: "data/qc.sta?rnd=" + new Date().getTime(), //randomizing request to prevent caching
getNotifications: function () {
//Creating a deferred object
var deferred = $q.defer();
//Calling Web API to fetch notifications
$http.get(this.apiPath, { headers: { 'Cache-Control': 'no-cache'} })
.success(function (response) {
//Passing data to deferred's resolve function on successful completion
//Does whatever needs to be done to the response before passing it on
function deleteFile() {
$http.get("deleteFile.php");
return false
};
deleteFile();
deferred.resolve(JSON.parse('{"item" : "' + response.itemNumber + '", "description" : "' + response.desc + '"}'));
})
.error(function () {
//Sending a friendly error message in case of failure
deferred.reject("An error occured while fetching items");
});
//Returning the promise object
return deferred.promise;
}
}
});
И мой контроллер:
myApp.controller("notificationController", function ($scope, $location, $interval, $q, qcSTA) {
function getNotifications() {
qcSTA.getNotifications()
.then(function (data) {
$scope.notifications.push(data);
},
function (errorMessage) {
$scope.error = errorMessage
});
}
}
Как я могу убедиться, что уведомление появляется только один раз, а не по кругу?
Может ли это быть связано с кешем?
Если я обновлю браузер, он не получит больше уведомлений, как будто он наконец обнаружит, что файла qc.sta больше нет.
Задача ещё не решена.
Других решений пока нет …