在工厂中返回数据时,Angular UI路由器在控制器中解析未定义

时间:2016-06-11 23:29:24

标签: javascript angularjs angularjs-directive angular-ui-router angular-routing

我正在使用Angular Ui路由器,在返回工厂时解决控制器中未定义的问题。这里有什么不对?为什么在退回工厂电话时未定义?

返回字符串时工作: 在resolve函数中返回一个简单的字符串时,在控制器中获取数据。

工厂电话

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);
            });
        });
    },
  };
});

UI路由器:

.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');

1 个答案:

答案 0 :(得分:0)

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);
        });
    });
},