Пока это полный источник
angular
.module('app')
.factory('Friends', ['$http',function($http){
return {
get: function(){
return $http.get('api/friends.json')
.then(function(response){
alert(JSON.stringify( response.data));
return response.data;
});
}
};
}])
контроллер:
angular.module("app")
.controller('homeCtrl',['$scope','Friends',
function($scope, Friends){
$scope.title = "Welcome";
$scope.items=["2016","2015", "2014"];
$scope.friends = Friends.get();
$scope.save = function(){
$http.post('/api/friends', friends);
}
}])
$stateProvider
.state('home',{
url:'/',
templateUrl:'templates/home.html',
controller: 'homeCtrl',
resolve : {
friends:['Friends', function(Friends){
return Friends.get();
}]
}
})
Результат, когда я пытаюсь предупредить его:
Пользовательский интерфейс:
* и мой навигатор ddl не работает, как сделать трюк?
Friends.get() возвращает обещание. Вы должны использовать метод then:
Friends.get().then(function(data) { $scope.friends = data; }); //instead of $scope.friends = Friends.get();
вы должны использовать $ q для обещаний:
angular
.module('app')
.factory('Friends', ['$http', '$q' ,function($http, $q){
var self = {};
self.get = function() {
var deferred = $q.defer();
$http.get('api/friends.json')
.success(deferred.resolve)
.error(deferred.reject)
return deferred.promise;
}
return self
}])
Разрешить:
resolve : {
friends:['Friends', function(Friends){
return Friends.get();
}]
}