2016-04-01 21 views
2

私は工場、areaFactoryを持っており、その中に私がこれを持って行われます。約束は、約束の前リターンは、

return { 
    GetAreas : function(depKey){ 
     var areaPromise = AppService.getArea(depKey); 
     areaPromise.then(function (Obj){ 
      var areas = Obj['rows']; 
      var areaList = []; 

      angular.forEach(areas, function(obj){ 
       areaList.push({ 
        id: obj[0], 
        name: obj[1] 
       }); 
      }); 

      return areaList; 

     }); 
    } 
} 

私は$scope.areasが不定となり、コントローラから$scope.areas = AreaFactory.GetAreas(key);を呼び出して、私はそれが私のためである考え出し工場は私の約束が終わる前にundefinedを返します。

約束が完了するまで、工場が地域のリストを返す前に、工場に待たせることができますか?

答えて

2

返すファクトリメソッドからの約束:コントローラで

GetAreas : function(depKey){ 
     var areaPromise = AppService.getArea(depKey); 
     return areaPromise.then(function (Obj){ 
       .... 
     }); 
} 

そして:

AreaFactory.GetAreas(key).then(function(list){ 
    $scope.areas = list; 
}); 
+0

速く、実行可能なソリューションをありがとう!今私は幸せに昼食に行くことができます、私は戻ってきて受け入れる(私が受け入れるまで、10分のルールのために7分) – klskl

0

あなたが約束を返す、あなたのコントローラ内のエラーケースを扱うことを確認してください。 例:

AreaFactory.GetAreas(key).then(
    function(list){ 
    $scope.areas = list; 
    }, 
    function(error) { 
    //handle error here 
    } 
);