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