Установите данные сервиса Angularjs в переменную контроллера

0

Я пытаюсь установить переменную scope controllers в данные, но не повезло. Консоль.log в контроллере не определена. Цените помощь!

У меня угловой сервис имеет следующий код -

service('VyrtEventService', ['$http', function($http) {
  var events = [];

  this.getArtistEvents = function(artistId) {
    var url = '/api/users/' + artistId + '/';

    var promise = $http.get(url).success(function(data, status, headers, config) {
      events = data.artist.events;
      console.log(events);
      return events;
    }).catch(function(error) {
      status = 'Unable to load artist data: ' + error.message;
      console.log(status);
    });

    return promise;
  };
}]);

И я ссылаюсь на это в контроллере следующим образом:

VyrtEventService.getArtistEvents($scope.artistId).then(function(data){
    $scope.events = data.data.artist.events;
});

console.log($scope.events);
  • 0
    Можете ли вы показать код контроллера?
  • 0
    контроллер ('VyrtEventCtrl', ['$ scope', 'VyrtEventService', функция ($ scope, VyrtEventService) {$ scope.artist; $ scope.events; $ scope.active_event_id; $ scope.status; VyrtEventService.getArtistEvents ($ .artistId) .then (function (data) {$ scope.events = data.data.artist.events;}); console.log ($ scope.events);}]);
Показать ещё 7 комментариев
Теги:
angular-services
angular-promise

2 ответа

0

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

controllersModule.controller('MyCtrl', function($scope, $filter, $http, $compile, ngTableParams, **FactoryYouwant**) 
    {

        **FactoryYouwant**.getdata($scope.**scopeYoutwantTopass**).then (function(responseData){    
        var ResponseFromServer =responseData.data;
    }

in service

    controllersModule.factory('**FactoryYouwant**, function($http) {
        var responseData = null;

        return {
            getdata : function(**data**){     (you dont have to use $)                  
                responseData = $http.post or whatever actually gets you data;
                return responseData;
            }

          };
    });

Надеюсь, это поможет вам вызвать получение данных из службы в любом месте контроллера.

  • 0
    Спасибо! в настоящее время это вводится
0

Вы должны просто указать $scope.events = data в вашем контроллере, потому что ваше обещание уже возвращает data.artist.events когда оно решает

  • 0
    не повезло. data.data.artist.events дает мне что-то, но назначение этого в $ scope.events - нет.

Ещё вопросы

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