如何使用AngularJs只显示一个页面时禁用分页
问题描述:
我有一张用户表,我可以根据定义的某些状态对显示进行排序。如何使用AngularJs只显示一个页面时禁用分页
HTML
<div data-ng-controller="adminController">
<div class="row">
<div class="col-md-9">
<h3> <span style="color:blue">List of Applied Users</span></h3>
</div>
<div class="col-md-2">
<br>
<select class="form-control" id="sel1" data-ng-model="status" required>
<option value="">Status</option>
<option value="Open">Open</option>
<option value="In-Progress">In-Progress</option>
<option value="Rejected">Rejected</option>
<option value="Verified">Verified</option>
<option value="Closed">Closed</option>
</select>
</div>
</div>
<br>
<div class="padding">
<table class="table table-hover" border="2" >
<thead>
<tr>
<th width="30" bgcolor="#FF8566">Si.No</th>
<th width="90" bgcolor="#FF8566">Date</th>
<th width="140" bgcolor="#FF8566">Name</th>
<th width="340" bgcolor="#FF8566">Service Name</th>
<th width="90" bgcolor="#FF8566">Status</th>
th width="40" bgcolor="#FF8566"></th>
</tr>
</thead>
<tbody>
<tr data-ng-repeat="userDetails in (data | filter:status:status.status).slice(((currentPage-1)*itemsPerPage), ((currentPage)*itemsPerPage)) ">
<td></td>
<td> {{ userDetails.subDate | date : 'MM-dd-yyyy' }} </td>
<td> {{ userDetails.fullName }} </td>
<td> {{ userDetails.serviceType.serviceName }} </td>
<td> {{ userDetails.status.status }} </td>
<td>
<button type="button" class="btn btn-xs btn-success" data-ng-click="editUser(userDetails.id)" ng-if="userDetails.status.status !=='Closed'" >View</button></td>
</tr>
</tbody>
</table>
</div>
<uib-pagination total-items="totalItems" ng-model="currentPage" ng-change="pageChanged()" class="pagination-sm" items-per-page="itemsPerPage" ng-show ="blocked"></uib-pagination>
</div>
JS
app.controller('adminController',[ '$scope', '$http', function($scope, $http) {
$scope.$watch('status', function()
{
var array =[];
alert($scope.status);
if($scope.status!=undefined)
{
totaldata.forEach(function(value, arr)
{
if(value.status.status==$scope.status)
{
array.push(value);
}
console.log($scope.status);
})
$scope.data = array;
$scope.totalItems = array.length;
console.log(array.length);
}
else{
$scope.data = totaldata;
$scope.totalItems = totaldata.length;
console.log(totaldata.length);
}
})
$http.get('getAlldetails').success(function(response)
{
$scope.blocked = true;
$scope.data = response;
totaldata=response;
$scope.totalItems = response.length;
$scope.currentPage = 1;
$scope.itemsPerPage = 9;
$scope.maxSize = 5;
alert($scope.totalItems.length);
$scope.setPage = function (pageNo) {
$scope.currentPage = pageNo;
};
}).error(function(error)
{
alert(error);
});
$scope.editUser = function(id)
{
$location.url('/editUser/'+ id);
}
}]);
如何隐藏分页如果只有一个网页应用过滤器后显示?我试过ng-show
和ng-if
,但没有运气。
答
过滤你ng-repeat
数据像这样
<tr ng-repeat="row in filteredData = (tableData | filter: filterQuery)">
<td>{{row.name}}</td>
<td>{{row.last_name}}</td>
<td>{{row.age}}</td>
<td>{{row.email}}</td>
</tr>
包裹你的div和一套NG-显示/ NG隐藏uib-pagination
,仅显示如果filteredData
量越大则每页的项目分页(有更多的项目则每页的项目意味着你有更多然后1页)
<div ng-show="filteredData.length > itemsPerPage">
<uib-pagination total-items="totalItems" ng-model="currentPage" ng-change="pageChanged()" class="pagination-sm" items-per-page="itemsPerPage" ng-show ="blocked"></uib-pagination>
</div>
,所以当你将改变筛选条件,消化周期将运行一个重新评估你的NG-显示
+0
它的工作。谢谢 – Protagonist
+0
不客气!是ng-repeat还是ng-show中的问题? – svarog
你想禁用它还是完全隐藏它? – svarog
@svarog我想隐藏分页栏,如果只有一个页面要显示 – Protagonist