Angular Service использует Factory, данные верны, но не отображаются в интерфейсе пользователя

0

Пока это полный источник

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();
          }]
          }
        })

Результат, когда я пытаюсь предупредить его:

Изображение 174551

Пользовательский интерфейс: Изображение 174551

* и мой навигатор ddl не работает, как сделать трюк?

Изображение 174551

Теги:

2 ответа

2
Лучший ответ

Friends.get() возвращает обещание. Вы должны использовать метод then:

Friends.get().then(function(data) { $scope.friends = data; }); //instead of  $scope.friends = Friends.get();
  • 0
    Спасибо, сэр .. Я все еще новичок в мире, и не знаю, что такое обещание. Можете ли вы дать мне подсказку с угловым маршрутом, чтобы сбежать с маршрута начальной загрузки?
  • 0
    Извините, но я не понимаю ваш вопрос. Можете ли вы перефразировать свой вопрос?
Показать ещё 3 комментария
1

вы должны использовать $ 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();
   }]
 }

Ещё вопросы

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