Сообщение об успехе $ window.location в Angular Js

0

Я использую $window.location(url) для загрузки файла csv непосредственно из rest api.

Мне нужно отобразить сообщение о успехе, хотя я использую обещания, файл загружается, но я не могу показать сообщение об успешном завершении.

function download() {
  getcsv().then(function(response) {
    if (response === 'success') {
      $scope.msg = 'success';
    }
  })
}
getCSV() {
  var defer = $q.defer;
  downloadCSV();
  return defer.promise;
}

function dowloadcsv() {
  $window.location(url);
}
  • 1
    Можем ли мы увидеть остальную часть вашего кода, где вы показываете тип сообщения, которое вы пытаетесь отобразить?
  • 0
    function download(){ getcsv().then(function(response){ if(response==='success') { $scope.msg='success';} }) } getCSV(){ var defer=$q.defer; downloadCSV(); return defer.promise; } function dowloadcsv(){ $window.location(url); }
Показать ещё 3 комментария
Теги:
csv
rest

1 ответ

1
Лучший ответ

Вы можете использовать $ timeout-сервис, который возвращает обещание:

app.factory('downloadService', function($q, $window, $timeout) {
    return {
    download: function(url) {
        var defer = $q.defer();

        $timeout(function () {
            $window.location.href = url;

        }, 1000)
            .then(function () {
                defer.resolve('success');
            }, function () {
                defer.reject('error');
            });
        return defer.promise;
        }
    }
}

Если приведенный выше код не является альтернативой, попробуйте использовать $ q.resolve внутри вашей функции loadcsv.

  • 0
    большое спасибо
  • 0
    Однако следует отметить, что, передав 1000 в $timeout вы задерживаете «загрузку» на столько миллисекунд (что может быть, вы хотите, idk). Кроме того, $timeout самом деле ничего здесь не выполняет, потому что он всегда будет возвращать успех в этом примере (это потому, что обещание в $ timeout будет отклонено, только если вы отмените его с помощью docs.angularjs.org/api/ng/service/ $ timeout # отменить ).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню