2014-10-15 2 views
0

мой код:

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

делает эту работу? – Jazzy

+0

В коде есть несоответствие скобок. Что такое открывающая скобка для той, которую вы закрываете в строке 7? –

+0

Помог ли кто-нибудь из этих ответов решить вашу проблему? – Jazzy

ответ

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

Я советую вам вместо этого использовать $ 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; 
    }); 
Смежные вопросы