【问题标题】:Angular UI router resolve undefined in controller when return data in factory在工厂返回数据时,Angular UI 路由器在控制器中解析未定义
【发布时间】:2016-06-11 23:29:24
【问题描述】:

我正在使用 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);
            });
        });
    },
  };
});

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

【问题讨论】:

  • 我认为这是因为你没有从你的工厂返回承诺。尝试添加返回,例如:return Service1.log("user", ...)

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


【解决方案1】:

MyService() 方法的定义中,您不会返回任何内容。结果,从resolve 注入控制器的值是undefined。尝试更改代码以从 MyService() 方法返回 promise/ value

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

【讨论】:

猜你喜欢
  • 2017-03-12
  • 2016-07-04
  • 1970-01-01
  • 2016-02-18
  • 2016-09-04
  • 2021-08-14
  • 1970-01-01
  • 1970-01-01
  • 2019-02-13
相关资源
最近更新 更多