2016-02-09 4 views
0

У меня есть угловое приложение с запросом $ htto.get, который работает отлично, но мне нужно выполнить его каждую секунду, чтобы принести новые данные.

Услуги:

angular.module('adf.widget.liveCharts') 
    .service('liveChartService', function($q, $http, $timeout){ 

    return { 
     getJSON: function(path){ 
     var deferred = $q.defer(); 
     var url = 'http://orbit5.ds.cs.umu.se:8888/vrio/blk'; 
     $http.get(url) 
      .success(function(data){ 
      if (data){ 
       deferred.resolve(data); 
       } else { 
       deferred.reject(data.data.message); 
       } 
      }) 
      .error(function(){ 
      deferred.reject(); 
      }); 
     return deferred.promise; 
     } 
    } 
    }); 

добавив контроллер здесь для справки

angular.module('adf.widget.liveCharts', ['adf.provider', 'highcharts-ng']) 
    .config(function(dashboardProvider){ 
    // template object for github widgets 
    var widget = { 
     templateUrl: '{widgetsPath}/liveCharts/src/view.html', 
     reload: true, 
     resolve: { 
     /* @ngInject */ 
     paths: function(liveChartService, config, $timeout){ 
      if (config.path){ 
      return liveChartService.getJSON(config.path); 
      } 

     } 
     }, 
     edit: { 
     templateUrl: '{widgetsPath}/liveCharts/src/edit.html' 
     } 
    }; 
+0

Что случилось с $ timeout? –

+1

Если вам нужны обновленные данные, которые часто, вы, вероятно, должны смотреть на веб-узлы. – Quentin

+0

Я не знаю, как правильно внедрить тайм-аут с этим кодом, если я добавляю $ timeout (function (path) ..., 1000), тогда я получаю сообщение об ошибке liveChartService.getJSON не является функцией моего контроллера .. также добавляет контроллер выше – Imo

ответ

0

В контроллере сделать так.

$interval(function(){ 

    liveChartService.getJSON().then(function(data){ 

     //$scope.data = data; 
    }) 
},1000); 
0

Использование $ интервал может помочь вам - Это очень похоже на setInterval в ванильных JS - В основном это структура

$ интервал (п, задержка, [число], [invokeApply], [ Проходить]);

последние 3 параметра является необязательным, но вы должны передать функции + задержек времени в миллисекундах, вы можете использовать любую функцию, там, или вызвать функцию, возвращающую другую функцию:

$interval(function(){ 
    liveChartService.getJSON().then(function(data){ 
     //some codes here 
    }) 
},1000); 

Надеется, что это помогает вы ...