我有$ scope的问题。在我的应用程序中,我制作了一个分页列表。为了做到这一点,我创建了一个方法,它返回一个包含元素数量的列表并且它正常工作。现在我想要一个模态来过滤列表。因此,当我发送研究时,我的研究范围很好。但是当我更改页面时,控制器会重新调整,我会丢失参数。如何防止重新加载范围或保留以前的范围。
这是我的控制器的一部分:
//request of research
$scope.edit = function (id) {
var customer = getCustomer(id);
var reqEditCustomer = $http({ url: '/api/customers/', dataType: 'json', method: 'PUT', data: JSON.stringify(customer), contentType: 'application/json; charset=utf-8' });
reqEditCustomer.success(function (dataResult) {
$scope.customer = dataResult;
$scope.cancel();
});
$scope.customers = GetListFiltered(customer.lastName, customer.firstName, customer.address, customer.town, customer.zipCode, $scope.skip, $scope.numPerPage);
}
// GetListFiltered
function GetListFiltered(lastName, firstName, address, town, zipCode, skip, take) {
var reqSearchCustomers = $http({ url: '/api/customers/GetFilteredList', params: { 'lastName': lastName, 'firstName': firstName, 'address': address, 'town': town, 'zipCode': zipCode, 'skip': skip, 'take': take } });
reqSearchCustomers.success(function (dataResult) {
$scope.customers = dataResult;
});
var reqgetcustomers = $http({ url: 'api/customers/GetNbCustomer', params: { 'lastName': lastName, 'firstName': firstName, 'address': address, 'town': town, 'zipCode': zipCode, 'skip': -1, 'take': -1 } });;
reqgetcustomers.success(function (dataresult) {
$scope.itemCount = dataresult;
$scope.nbPage = Math.ceil($scope.itemCount / $scope.numPerPage);
console.log(' itemCount = ' + $scope.itemCount);
});
$scope.skip = (($scope.currentPage - 1) * $scope.numPerPage);
$scope.nbPage = Math.ceil($scope.itemCount / $scope.numPerPage);
}
因此,它的工作我恢复了研究的参数,项目和页面的数量。但是当我加载我的分页列表的另一页时,我放宽了我的范围,所以它重新加载了我的整个客户列表。
//方法changePage()
$scope.changePage = function (curPage) {
$scope.currentPage = curPage;
$scope.skip = (($scope.currentPage - 1) * $scope.numPerPage);
$scope.customers = GetListFiltered($scope.lastName, $scope.firstName, $scope.address, $scope.town, $scope.zipCode, $scope.skip, $scope.numPerPage);
$scope.nbPage = Math.ceil($scope.itemCount / $scope.numPerPage);
}
答案 0 :(得分:0)
您可以使用类似Angular Locker的内容来保持状态。
它有一个特别好的功能"binding to $scope",可让您直接将$scope
属性映射到本地或会话存储中的位片。
你可以这样做:
locker.bind($scope, 'customers');
答案 1 :(得分:0)
您可以在$ http服务中设置cache:true。所以,如果它再次调用客户列表,它将不会进入服务器。