Я пытаюсь установить переменную 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);
Чтобы передать область обслуживания из любого места в контроллере. Удостоверьтесь, что вы вводите услуги.
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;
}
};
});
Надеюсь, это поможет вам вызвать получение данных из службы в любом месте контроллера.
Вы должны просто указать $scope.events = data
в вашем контроллере, потому что ваше обещание уже возвращает data.artist.events
когда оно решает