Angular JS watch data из сервисного метода

0

Поэтому у меня есть служба, которая получает объект json, который работает нормально. В моем контроллере я хочу посмотреть этот объект для любых изменений. Когда есть изменения в объекте, я хочу, чтобы это обновление "на лету" в пользовательском интерфейсе. Вот моя услуга:

angular.module('vertopsappApp.services', [])
.factory('vertopsappAppAPIservice', function($http) {

var vertopsappAppAPI = {};

vertopsappAppAPI.getDrivers = function() {
  return $http({
    method: 'JSONP',
    url: 'http://faboolis.com/example.json?callback=JSON_CALLBACK'
  });
}

return vertopsappAppAPI;
 });

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

 .controller("LineCtrl", function ($scope, vertopsappAppAPIservice) {
   $scope.$watch('vertopsappAppAPIservice.getDrivers()', function (newVal) {
    console.log('data changes into: ', newVal)
   }, true);
 });

Любая помощь приветствуется. Заранее спасибо.

  • 0
    код часов не имеет особого смысла. Где хранятся и используются данные ответов? Это то место, где вы храните те данные, на которые вы, вероятно, хотите обратить внимание. Показать больше кода, относящегося к getDrivers()
  • 0
    Служба $ http использует обещания, вы должны посмотреть документы, чтобы узнать, как их использовать.
Теги:
controller
service

1 ответ

-2

Вы можете попробовать исправить событие из службы, когда ваши данные изменятся, и прослушивание их на контроллере и, следовательно, обновление вашей модели, чтобы пользовательский интерфейс изменился.

Редактировать с помощью примера:

Внутренняя служба, когда ваши данные изменяются:

$rootScope.$emit("value_changed", newValue); //trigger this when you know there is a change in value

Внутренний контроллер:

$rootScope.$on("value_changed", function(e,newValue) { $scope.urUIVariable = newValue; });

  • 0
    Не могли бы вы привести пример того, что вы имеете в виду?

Ещё вопросы

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