AngularJS实现简单的分页功能

本篇文章由:http://xinpure.com/angularjs-simple-paging-functionality/

初学 AngularJS, 尝试着写一些小功能

代码逻辑写得略粗糙,仅仅只是实现了简单的分页功能,使用 AngularJS 尝尝鲜。

AngularJS Code (Users.js)

var Users = angular.module('Users', []);

Users.controller('UserList', function($scope, $http) {

    $scope.start        = 0;
    $scope.showLimit    = 10;
    $scope.count        = 0;

    /* Default Users List */
    $http.get('welcome/get_users' + '/' + $scope.start + '/' + $scope.showLimit).success(function(data){
        $scope.users = data;
    });

    /* Count Users */
    $http.get('welcome/count_users').success(function(data){
        $scope.count = data;
    });

    /* Pagination */
    $scope.page = function (start) {

        $scope.start = start < 0 ? 0 : start;
        if (start >= $scope.count)   $scope.start = $scope.count - $scope.showLimit;

        $http.get('welcome/get_users' + '/' + $scope.start + '/' + $scope.showLimit).success(function(data){
            $scope.users = data;
        });
    }

});

HTML Code

<head>
    <script src="angular.js"></script>
    <script src="Users.js"></script>
</head>
<body ng-controller="UserList">
<div id="container">
    <div id="user_list">
        Search: <input class="query" type="text" ng-model="query" placeholder="Query">
        <hr />
        <table>
            <thead>
                <th>ID</th>
                <th>User Name</th>
                <th>Phone Number</th>
                <th>Email</th>
            </thead>
            <tbody>
                <tr ng-repeat="user in users | filter:query">
                    <td>{{user.id}}</td>
                    <td>{{user.user_name}}</td>
                    <td>{{user.phone_number}}</td>
                    <td>{{user.email}}</td>
                </tr>
            </tbody>
        </table>
        <hr />
        <button ng-click="page(0)">First</button>
        <button ng-click="page(start - showLimit)">Prev</button>
        <button ng-click="page(start + showLimit)">Next</button>
        <button ng-click="page(count - showLimit)">Last</button>
        <input type="text" ng-model="gotoPage" />
        <button ng-click="page(gotoPage * showLimit)">GO</button>
    </div>
</div>
</body>

CSS Code (稍微美化了一下)

body {
    background-color: #fff;
    margin: 40px;
    font: 13px/20px normal Helvetica, Arial, sans-serif;
    color: #4F5155;
}
#user_list {
    margin: 15px;
}
#container {
    margin: 10px;
    border: 1px solid #D0D0D0;
    box-shadow: 0 0 8px #D0D0D0;
}
input {
    width: 40px;
    height: 19px;
    padding: 3px;
    color: #555;
    border-radius: 3px;
    border: 1px solid #ccc;
}
input.query {
    width: 100px;
}
button {
    padding: 5px;
    background-color: #fff;
    border: 1px solid #ccc;
    border-radius: 3px;
}
table {
    border-spacing: 0;
    border-collapse: collapse;
}
td,th  {
    border: 1px solid #ccc;
    text-align: center;
    padding: 5px;
}

主要逻辑代码都是写死的,不灵活,慢慢改进吧。

posted @ 2015-04-10 19:08  xinpureZhu  阅读(506)  评论(0编辑  收藏  举报