刷新页面时丢失范围

时间:2015-08-12 14:51:59

标签: angularjs scope angularjs-scope

我有$ 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);
}

2 个答案:

答案 0 :(得分:0)

您可以使用类似Angular Locker的内容来保持状态。

它有一个特别好的功能"binding to $scope",可让您直接将$scope属性映射到本地或会话存储中的位片。

你可以这样做:

locker.bind($scope, 'customers');

答案 1 :(得分:0)

您可以在$ http服务中设置cache:true。所以,如果它再次调用客户列表,它将不会进入服务器。