我的代码:
app.factory('requestData',function($http,$q){
return {
reqData:function(params,url){
return $http.get(url,{"params":params}).then(function(data){
return data.data
});
});
requestData.reqData( {module:"channel"},'/channel' ).then(function(data){
$scope.selectChannel = data.value;
})
.then(function(){
requestData.reqData( {channel_id:$scope.selectChannel},'/channel').then(function(data){
$scope.summary = data.summary;
})
})
.then(function(){
//use $scope.summary do something
});
首先,我必须设置" $ scope.selectChannel"异步的价值,然后我使用" $ scope.selectChannel"请求。还有另一种方法可以实现吗?
答案 0 :(得分:1)
尝试这样的事情:
app.factory('RequestData',function($http,$q) {
var RequestData = {
// assuming params is an object
reqData: function(params) {
$http.post('/channel', params).then(function(response){
RequestData.selectChannel = response.value;
});
}
};
return RequestData;
});
在您的控制器中,将RequestData
作为依赖项注入,然后设置$scope.RequestData = RequestData
,然后您就可以在视图中访问RequestData.selectChannel
。
答案 1 :(得分:1)
我建议您使用$ resource代替。
.factory("$$service", ["$resource", function ($resource) {
return $resource('/channel',
{
module: "@module",
channel_id: "@channel_id"
};
}]);
并以这种方式使用:
var service = new $$service();
service.$get({"module":"channel"})
.then(function(data){
return service.$get({"channel_id":data.value});
})
.then(function(data){
$scope.summary = data;
});