2014-02-03 4 views
0

У меня есть http-метод, который получает некоторые данные из электронной таблицы google. Я хочу добавить это в $scope, чтобы я мог выводить его в DOM. Позже я мог бы сделать временной цикл этого, чтобы обновить $ scope get каждые 5 секунд или около того.Где в угловом я должен положить этот код?

я в настоящее время запустить код в app.run:

angular.module('spreadsheet2angular', []). 
run(function($http){ 
    $http({method: 'GET', url: 'http://cors.io/spreadsheets.google.com/feeds/cells/0Aq_23rNPzvODdFlBOFRYWlQwUFBtcXlGamhQeU9Canc/od6/public/values?alt=json'}). 
     success(function(data, status, headers, config) { 
      var entries = data.feed.entry; 
      var phraces = []; 
      entries.forEach(function(entry){ 
       var cell = entry.gs$cell; 
       if(!phraces[cell.row]){ 
        phraces[cell.row] = {}; 
       } 

       if(cell.col == 1) 
       { 
        phraces[cell.row].name = cell.$t; 
       } 
       else if(cell.col == 2) 
       { 
        phraces[cell.row].value = cell.$t; 
       } 
      }); 
      phraces.forEach(function(phrace){ 
       console.log(phrace); 
      }); 
     }). 
     error(function(data, status, headers, config) { 
      console.log('error'); 
     }); 
    }); 

Я новичок в угловатый, это лучшее место, чтобы запустить его? Я хотел бы запустить его как нечто, что легко можно использовать повторно в разных проектах.

ответ

1

Я думаю, из того, что вы объяснили, будет service. Постройте его, затем введите его в контроллер. Затем вы можете вызвать/использовать этот объект службы, когда захотите.

1

Я бы использовал сервис/фабрику, которая возвращает обещание. Таким образом, мы вызываем метод асинхронной службы, возвращаем обещание и анализируем ответ в контроллер.

Если вы думаете использовать один и тот же вызов в будущем, вы можете написать общий метод.

Точно так же, если вы собираетесь анализировать ответ таким же образом в будущем, то часть логики я бы поставил на службу и обернул $q. Таким образом, ответ все равно будет обещанием.

И это пример я использую, который может помочь вам понять, что я смысл:

app.service('apiService', ['$http', '$q', '$rootScope', 
     function($http, $q, $rootScope) { 
       var request = function(method, data) { 
         var deferred = $q.defer(); 
         var configHttp = { 
           method: 'POST', 
           url: config.api + '/' + method 
         }; 
         if (data !== undefined) { 
           configHttp.data = data; 
         } 
         $http(configHttp).success(function(data, status, headers) { 
           if (data.error === undefined) { 
             deferred.resolve(data); 
           } else { 
             deferred.reject(data); 
           } 
         }).error(function(data, status, headers) { 
           deferred.reject(data); 
         }); 
         return deferred.promise; 
       } 

       return { 
         getItem: function() { 
           return request('get_item'); 
         }, 
         getItemByParams: function(id) { 
           return request('get_item_by_params', {id: id}); 
         } 
       }; 
     } 
]); 
Смежные вопросы