具有$ resource和$ scope的Angularjs

时间:2015-11-29 21:44:50

标签: angularjs scope angular-resource

我有以下两个方法getP和getPage,getP从数据库中获取数据并从输出中设置$ scope.mydata,我需要在其他方法getPage中使用此输出,所以我在contoller中调用这两个方法,< / p>

问题我无法在第二种方法中获取数据,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();

2 个答案:

答案 0 :(得分:0)

你应该使用promises(注意函数getP返回promise):

$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);

答案 1 :(得分: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();