2015-11-29 143 views
0

我有以下兩種方法getP和getPage,getP從數據庫獲取數據$資源並設置$ scope.mydata從輸出,我需要在其他方法使用此輸出getPage所以我打電話這兩個方法在位指示,

的萬阿英,蔣達清我不能得到在第二種方法的數據,執行console.log($ scope.mydata)獲得空

 $scope.mydata={}; 
     var sasa; 
     var page=0; var size=100; 

    $scope.getP = function() { 
      sasa=$resource('api/testrecordajaxs/:page/:size', { 
       page : page, 
       size : size 
      }).query(); 
      $scope.mydata=sasa; 
      }; 

      var getPage = function() { 
       console.log($scope.mydata) //get null 
       var firstRow = (paginationOptions.pageNumber - 1) * paginationOptions.pageSize; 
       $scope.gridOptions.data = $scope.mydata.slice(firstRow, firstRow + paginationOptions.pageSize); 
      }; 


      $scope.getP(); 
      getPage(); 
+0

Ofcourse它還沒有定義,你不等待數據從'$ resource'返回。另外,你定義'sasa'的方式看起來有點不對。閱讀關於如何使用'$ resource'和'promises'的角度。 – Arg0n

回答

0

您應該使用的承諾(注意函數返回getP諾) :

$scope.mydata = {}; 
var sasa; 
var page = 0; 
var size = 100; 

$scope.getP = function() { 
    return $resource('api/testrecordajaxs/:page/:size', { 
    page: page, 
    size: size 
    }).query().then(function(data) { 
    $scope.mydata = data; 
    return data; 
    }); 
}; 

var getPage = function(data) { 
    console.log($scope.mydata) // you can use data also 
    var firstRow = (paginationOptions.pageNumber - 1) * paginationOptions.pageSize; 
    $scope.gridOptions.data = $scope.mydata.slice(firstRow, firstRow + paginationOptions.pageSize); 
}; 
$scope.getP().then(getPage); 
+0

我做了你的改變,但得到這個錯誤$資源(...)。查詢(...)。然後不是一個函數 –

+0

我剛剛複製你的代碼示例和「promisified」。所以如果之前有一個函數'query',那麼它應該在變化之後。檢查你的代碼。 –

+0

在老版本的Angular中,'.success()'是你解決承諾時的方式。在更新的版本中,它被改爲'.then()'來鏡像標準的promise規範。 – rummik

0

我應該等待數據來自服務器重新再使用它,所以在

$scope.gridOptions.data = data.slice(firstRow, firstRow + paginationOptions.pageSize); 

使用數據之前,我用

 data.$promise.then(function(result) 

所以這個代碼工作正常我

  var page=0; var size=100; 

      var getData=$resource('api/testrecordajaxs/:page/:size', { 
       page : '@page', 
       size : '@size' 
      }); 

      function getPage() { 
      var data=getData.query({page:page,size:size}); 
       data.$promise.then(function(result) { 
       var firstRow = (paginationOptions.pageNumber - 1) * paginationOptions.pageSize; 
       $scope.gridOptions.data = data.slice(firstRow, firstRow + paginationOptions.pageSize); 
      }); 
      } 
      getPage(); 
+0

我做了類似的事情,但$ scope.variable仍然沒有被設置在承諾之外 –