Маршрутизатор Angular UI разрешает undefined в контроллере при возврате данных на заводе

Я использую маршрутизатор Angular Ui, когда возвращаю фабрику в разрешении, которое становится неопределенным в контроллере. Что здесь не так? Почему становится неопределенным при возврате фабричного вызова?

работает при возврате строки: при возврате простой строки в функции разрешения, получение данных в контроллере.

Заводской звонок

app.factory('LogHomService', function(Service1, Service2) {
  return {
    MyService: function(data) {
      Service1.log("user", encodeURIComponent("ad"))
        .then(function(response) {
          var FullUrl = response.strURL;
          var objs = response.products;
          Service2.pageLoad(objs)
            .then(function(response) {
              var homeScreen = response;
              data(homeScreen);
            });
        });
    },
  };
});

Маршрутизатор пользовательского интерфейса:

.state('home.prod', {
  url: '/product',
  views: {
    '@': {
      templateUrl: baseUrl + 'home/product',
      controller: 'productController'
    }
  },
  resolve: {
    param2: function(LogHomService) {
      return LogHomService.MyService();
    }
  }
})

Контроллер:

var productController = function ($scope, $rootScope, $state, $stateParams,param2)
{
       console.log(param2); // getting undefined
}
CashController.$inject = ['$scope', '$rootScope', '$state','$stateParams','param2');

person k.nisha Cuty    schedule 11.06.2016    source источник
comment
Я думаю, это происходит потому, что вы не возвращаете обещание с вашей фабрики. Попробуйте добавить возврат, например: return Service1.log("user", ...).   -  person AWolf    schedule 12.06.2016


Ответы (1)


В вашем определении метода MyService() вы ничего не возвращаете. В результате значение, введенное в контроллер из resolve, равно undefined. Попробуйте изменить свой код, чтобы он возвращал promise/ value из метода MyService().

MyService: function(data) {
  return Service1.log("user", encodeURIComponent("ad"))
    .then(function(response) {
      var FullUrl = response.strURL;
      var objs = response.products;
      Service2.pageLoad(objs)
        .then(function(response) {
          var homeScreen = response;
          data(homeScreen);
        });
    });
},
person Aditya Singh    schedule 12.06.2016
comment
при возврате службы1, получая ответ в контроллере, проблема возникает, когда возврат в службу 2 вызывает неопределенность. но ответ службы 2 имеет значения stackoverflow.com/questions/37769380/ - person k.nisha Cuty; 14.06.2016