2015-02-22 3 views
0

Я хочу, чтобы список был синхронизирован, поэтому я (прямо сейчас) опросил его каждую секунду. Но я, кажется, есть проблема - он не работает:Как я могу получить список снова и снова?

app.controller("MainController", function ($scope, $http, $timeout) {   
     $scope.responsePromise = $http.get("http://localhost:52219/API/GetList"); 

     $scope.responsePromise.success(function (data, status, headers, config) { 
      $scope.model.list = JSON.parse(data); 

      $timeout(function() 
      { 
       console.log("reload"); 
       $scope.responsePromise = $http.get("http://localhost:52219/API/GetList"); 
      }, 1000); 
     }); 

Моя цель извлечения списка каждый X втор с сервера, что переговоры с базой данных. Кто-нибудь знает, почему не спам «перезагружать»? Я получаю только один раз

+0

Вы не имеете никакого успеха обратного вызова на обещание в тайм-аут. И тайм-аут выполняется только один раз. Не повторяется. –

ответ

1

Вы ищете $interval, а не $ timeout.

от $ интервальных документов:

обертка для угловой Window.setInterval. Функция fn выполняется каждую задержку в миллисекундах.

, а также:

Примечание: Интервалы, созданные с помощью этой службы должны быть явно уничтожен, когда вы закончите с ними. В частности, они не автоматически уничтожаются при уничтожении области действия контроллера или элемента директивы. Вы должны принять это во внимание и всегда обязательно отменить интервал в соответствующий момент.

0

Как сказал @Nitsan Baleli, вы должны использовать услугу «$ interval», а не «$ timeout».

Вопрос был здесь спросил, пожалуйста, смотрите ответ: Angular JS $timeout vs $interval

Моя цель получения списка каждый X сек с сервера, что переговоры с базой данных.

я переписал свой код так, чтобы он соответствовал своей цели, она становится:

app.controller("MainController", function ($scope, $http, $timeout) { 

    var $scope.model = { 
     list:[] 
    }; 

    var getData = function(){ 
     $http.get("http://localhost:52219/API/GetList").success(function(data){ 
      $scope.model.list = JSON.parse(data); 
     }); 
    }; 

    getData(); // for the first call 

    $interval(function(){ 
     getData(); 
    }, 1000); 
}); 

Смотрите plunkr демо здесь: http://plnkr.co/edit/xCbGGyKPTeJtg7TeKKyE?p=preview

Смежные вопросы