Вызов функции после промежутка времени в Angular JS

0

Я пытаюсь обновить страницу после показа успешного сообщения. Я связал много фрагментов, но либо он обновляется, не показывая сообщение или наоборот.

Поэтому я подумал о том, чтобы вызвать функцию Refresh после интервала или Trigger снова кнопку щелчка мыши через некоторое время, чтобы обновить страницу.

Вот код, Как достичь вышеуказанного сценария?

JS CODE

$scope.Save = function (data) {
    debugger;
    $http.post($rootScope.WebApiURL + '/updatemanifeststatus');
    var value= $http.get($rootScope.WebApiURL + '/getmanifeststatus' );

        $scope.manifeststatus = data;

        $scope.showstatus = true;
        $scope.alert = { type: 'success', msg: 'Published Successfully.' };
        $(".statusDivPublish").show();

        $scope.Refresh1();

    }

    $scope.Refresh1 = function () {
        //refresh
        $state.go($state.current, {}, { reload: true });
    }
});

Вызов кнопки HTML

<div class="col-sm-offset-1">
    <button id="PublishButton" class="btn btn-default shiny " ng-disabled="manifeststatus.enablePublishButton" ng-click="Save(manifeststatus)">Publish</button>
</div>

Что я хочу сделать Вот вызов функции Refresh1() после промежутка времени таким образом, страница обновляется после показа сообщения.

  • 1
    вместо этого используйте $state.reload для $scope.Refresh1 функции $scope.Refresh1 . Если вы используете UI-роутер.
  • 2
    $ timeout - docs.angularjs.org/api/ng/service/$timeout
Показать ещё 4 комментария

2 ответа

2

Я немного поучаствовал в вашей проблеме, и мне не нужно было использовать $timeout для обновления модели с обновленными данными.

.controller('AController', function(ptth$) {

    var self = this;

    self.time = 'wait for it';

    self.init = function() {
      ptth$.get().then(function(data) {
        self.time = data;
      });
    };

    self.init();

    self.save = function() {
        ptth$.post().then(function() {
          //I use an alert instead of a div we show or hide.
          window.alert('hey, this is real success');
          //You either re-fetch data here and update your model
          //Or you reload after the alert...

          //This example works with a ng-model update, instead of a reload
          self.init();
        }, function() {
          window.alert('this is failure');
        });
    };
})

Несмотря на то, что это не так, как я хотел бы настроить вещи, этот пример должен проиллюстрировать, что вам действительно не нужно $timeout или $reload в этом отношении.

1

Ввести $ timeout и внести изменения в код JS.

$scope.Save = function (data) {
    debugger;
    $http.post($rootScope.WebApiURL + '/updatemanifeststatus');
    var value= $http.get($rootScope.WebApiURL + '/getmanifeststatus' );

        $scope.manifeststatus = data;

        $scope.showstatus = true;
        $scope.alert = { type: 'success', msg: 'Published Successfully.' };
        $(".statusDivPublish").show();

        //Adding a 5 second delay
        $timeout($scope.Refresh1, 5000);

    }

    $scope.Refresh1 = function () {
        //refresh
        $state.go($state.current, {}, { reload: true });
    }
});
  • 0
    Я попробовал ваш код, страница обновляется с обновленными данными, но предупреждение не отображается. 3 строки после $ scope.manifeststatus = data;
  • 0
    попробуйте увеличить задержку. позвольте мне отредактировать это для вас.
Показать ещё 1 комментарий

Ещё вопросы

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