我有以下两个方法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();
答案 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();