Używam Angular js, aby pokazać ekran ładowania. Działa dla wszystkich wywołań usług REST z wyjątkiem usługi REST w celu pobrania pliku. Rozumiem, dlaczego to nie działa, ponieważ do pobrania nie robię żadnego połączenia serwisowego za pomocą $ resource; zamiast tego używam normalnego podejścia do pobierania pliku, dlatego kod Angular js nie ma żadnej kontroli przy uruchamianiu/kończeniu zgłoszenia serwisowego. Próbowałem użyć $ resource, aby trafić w tę usługę REST, ale otrzymuję dane z tej usługi iw tym przypadku ekran ładowania działał dobrze, ale nie wiem, jak używać tych danych do wyświetlania użytkownikowi w celu pobrania w kątowy sposób. Poniżej są wymagane szczegóły. Proszę pomóż.
Approach 1 stosując podejście iframe:
/*Download file */
scope.downloadFile = function (fileId) {
//Show loading screen. (Somehow it is not working)
scope.loadingProjectFiles=true;
var fileDownloadURL = "/api/files/" + fileId + "/download";
downloadURL(fileDownloadURL);
//Hide loading screen
scope.loadingProjectFiles=false;
};
var $idown; // Keep it outside of the function, so it's initialized once.
var downloadURL = function (url) {
if ($idown) {
$idown.attr('src', url);
} else {
$idown = $('<iframe>', { id: 'idown', src: url }).hide().appendTo('body');
}
};
Podejście 2 przy użyciu $ zasób (nie wiem, jak do wyświetlania danych na ekranie, aby pobrać)
/*Download file */
scope.downloadFile = function (fileId) {
//Show loading screen (Here loading screen works).
scope.loadingProjectFiles=true;
//File download object
var fileDownloadObj = new DownloadFile();
//Make server call to create new File
fileDownloadObj.$get({ fileid: fileid }, function (response) {
//Q? How to use the response data to display on UI as download popup
//Hide loading screen
scope.loadingProjectFiles=false;
});
};
Zasadniczo to też robię, +1 na pytanie. – Strawberry
Hej Truskawka ... czy też masz jakiś problem? Które podejście bierzesz pierwszy lub drugi? – joy
W podejściu 1, jeśli usuniesz 'scope.loadingProjectFiles = false', czy pojawi się ekran ładowania? –