Я пытаюсь использовать решительность $ stateProvider с заводом я создалугловых щий маршрутная решительность с angularJS заводом
по какой-то причине, обещание от фабрики пустого объект
но когда я регистрируйте данные из вызова $ http, я получаю данные из моего .json-файла
любая идея, почему мой дефер.произведение - пустой объект?
playlistsService.js
(function() {
'use strict';
angular
.module('app.core')
.factory('playlistsService', playlistsService);
playlistsService.$inject = ['$http', '$q'];
/* @ngInject */
function playlistsService($http, $q) {
var service = {
loadPlaylists : loadPlaylists
};
return service;
////////////////
function loadPlaylists() {
var defer = $q.defer();
$http.get('data/playlists.json')
.success(function (data) {
console.log('json data: ' + angular.toJson(data));
defer.resolve(data);
});
console.log('defer.promise: ' + angular.toJson(defer.promise));
return defer.promise;
}
}
})();
playlists.js
(function() {
'use strict';
angular
.module('app.playlists')
.config(stateProvider)
.controller('Playlists', Playlists);
stateProvider.$inject = ['$stateProvider'];
Playlists.$inject = ['playlistsService'];
/* @ngInject */
function stateProvider($stateProvider){
$stateProvider
.state('app.playlists', {
url: '/playlists',
views: {
'menuContent': {
templateUrl: 'app/playlists/playlists.html',
controller: 'Playlists as vm',
resolve: {
playlists: function(playlistsService){
return playlistsService.loadPlaylists();
}
}
}
}
})
}
/* @ngInject */
function Playlists(playlists) {
/* jshint validthis: true */
var vm = this;
vm.activate = activate;
vm.title = 'Playlists';
vm.playlists = playlists;
activate();
////////////////
function activate() {
console.log('playlists object: ' + angular.toJson(vm.playlists))
console.log('playlists from service: ' + angular.toJson(playlists))
}
}
})();
Поскольку я использую в решительность .state, нужно ли мне разрешить данные HTTP $ в моей фабрике? –
@DerekHannah yes..otherwise вы можете вернуть обещание $ http.post. Позвольте мне обновить ответ –