如何在不使用功能的情况下重新分配范围变量

时间:2019-07-18 23:58:00

标签: html json angularjs

我试图在页面上包括分页,它似乎可以正常工作,但是我需要帮助的代码有问题。

在我的控制器中,我有一个范围变量,用于查询.factory返回的数据(用于ng-repeat中),并且需要为该范围变量分配空数组([]),以便可以使用它在我的分页标签中。我可以在angularjs中做到吗?

例如:

$scope.datalist = roll.query; //the same datalist(in ng-repeat) I want to reassign it that is;
$scope.datalist = []; //to be used as total-item in pagination

控制器

function($scope, rolls, $window, $http) {
    $scope.datalist = rolls.query(); // return list of rolls
    //paging
    $scope.form = {};
    $scope.datalist = []; //Here is my problem - it make ng-repeat return no data
    $scope.pageSize = 10;
    $scope.currentPage = 1;
}

HTML

<tr ng-repeat="tests in datalist | startFrom:(currentPage - 1) * pageSize | limitTo: pageSize >
  <td>{{$index + 1}}</td>
  <td>{{datalist.name}}</td>
</tr>

<pagination total-item="datalist.length" ng-model="currentPage" 
            item-per-page="pageSize">
</pagination>

运行代码时,$scope.datalist=[];使ng-repeat不显示任何内容,但是当我注释掉该行代码时,应用程序仅显示前10个项目。我需要将我的数据解析为分页标记中的total-item,请使datalist.length正常工作吗?

欢呼

2 个答案:

答案 0 :(得分:0)

首先,当您运行$scope.datalist = []时,它将不返回任何数据。因此,您必须设置$scope.datalist要显示的内容。其次,when I comment out that line of code the application display the first 10 items only发生这种情况可能是由于代码limitTo: pageSize有效。

答案 1 :(得分:0)

在解析之前,将数据列表长度复制到另一个变量,如下所示:-

function($scope, rolls, $window, $http) {
  $scope.datalist = rolls.query(); // return list of rolls
  //paging
  $scope.form = {};
  $scope.datalistLength = angular.copy($scope.datalist.length); //Here is my problem - it 
  //make ng-repeat return no data
  $scope.pageSize = 10;
  $scope.currentPage = 1;
}

现在使用此变量到您的分页标签中,如下所示:-

<pagination total-item="datalistLength" ng-model="currentPage"
            item-per-page="pageSize">
</pagination>