AngularJs:如何向resolve中的函数发送变量:它执行http请求?
所以我在路由器中通过resolve执行http请求,我想知道如何从http请求中的工厂获取值?我的工厂中有一个函数,我想调用它,从中获取一个值,并通过http请求发送该值。有没有办法在resolve函数中注入工厂AngularJs:如何向resolve中的函数发送变量:它执行http请求?,angularjs,httprequest,angularjs-service,Angularjs,Httprequest,Angularjs Service,所以我在路由器中通过resolve执行http请求,我想知道如何从http请求中的工厂获取值?我的工厂中有一个函数,我想调用它,从中获取一个值,并通过http请求发送该值。有没有办法在resolve函数中注入工厂 $routeProvider .when('/', { redirectTo: '/home' }) .when('/home', { templateUrl: 'views/main_portal.html', cont
$routeProvider
.when('/', {
redirectTo: '/home'
})
.when('/home', {
templateUrl: 'views/main_portal.html',
controller: MyController15,
resolve: MyController15.loadAll
})
.when('/home/convo', {
templateUrl: 'views/convo.html',
})
.otherwise({
redirectTo: '/home'
});
MyController15.loadAll = {
//I WANT TO PASS A VARIABLE HERE TO USE IN THE PARAMS OBJECT.
allQ: function($http) {
return $http({
url: some_url,
method: post,
params: {action: 'someAction', valueToPass: ???????}
});
}
};
var MyController15 = ['allQ',
function(allQ){
//some data manipulation of allQ.data
}];
您应该将http请求重组为服务。可能是您从中获得价值的同一服务。只需确保在服务方法中返回http承诺。也许您应该解析一些参数,然后控制器就可以使用$http或服务获取您的数据。。。像这样:
$routeProvider.when('/home/:valueToPass', {
templateUrl: 'views/main_portal.html',
controller: 'MyController15',
resolve: {valueToPass: function($route){
return $route.current.params.valueToPass;
}}
});
//...
app.controller('MyController15', function($scope, $http, valueToPass) {
//...
或者您可以使用这个JSFIDLE来说明您的问题吗
问题在于,我需要http请求中的数据,如果我将其放入服务中,我会收到一个未定义的错误,因为在加载视图之前,http请求没有加载。我现在设置它的方式已经解决了在加载数据之前加载视图,然后数据会自动刷新的问题。同样,问题是我如何以同样的方式使用它,但在解析中使用工厂/服务方法。如果您有plunkr或其他东西,这将更容易帮助您,因为我所描述的应该可以工作。