• Emberjs 分页


    <!DOCTYPE html>
    <html>
    <head>
        <meta charset=utf-8 />
        <!--
        Created using JS Bin
        http://jsbin.com
    
        Copyright (c) 2015 by machty (http://jsbin.com/ucanam/4075/edit)
    
        Released under the MIT license: http://jsbin.mit-license.org
        -->
        <meta name="robots" content="noindex">
        <title>JS Bin</title>
    
    
        <script>
            ENV = {
                ENABLE_ALL_FEATURES: true
            };
        </script>
    
        <script src="http://127.0.0.1:8887/BSP/src/bsp/bower_components/jquery/dist/jquery.js"></script>
        <script src="http://127.0.0.1:8887/BSP/src/bsp/bower_components/handlebars/handlebars.js"></script>
        <script src="http://127.0.0.1:8887/BSP/src/bsp/bower_components/ember/ember.debug.js"></script>
        <script src="http://127.0.0.1:8887/BSP/src/bsp/bower_components/ember/ember-template-compiler.js"></script>
    
        <style id="jsbin-css">
            .active {
                font-weight: bold;
            }
    
            table {
                width: 100%;
            }
    
            form {
                margin: 1em 0;
            }
    
            th {
                font-weight: normal;
            }
        </style>
    </head>
    <body>
    <script type="text/x-handlebars" data-template-name="application">
        <h2>Query Params: client-side sorting</h2>
    
        <p>
            In this example, we're not bothering querying
            the server for data but just sorting and
            paginating what we
            have already loaded on the client-side.
        </p>
    
        <p>
            <a href="http://jsbin.com/ucanam/2942">See here</a> for an example of
            how to opt into a full on transition
            that can re-query the server to manage
            pagination/sorting on the server side.
        </p>
    
        <p>
            Page:
            {{#each n in pages}}
            {{linkTo n (query-params page=n)}}
            {{/each}}
            of {{pages.length}}
        </p>
    
        <p>
            {{#if previousPage}}
            {{link-to 'Previous' (query-params page=previousPage)}}
            {{else}}
            Previous
            {{/if}}
    
            {{#if nextPage}}
            {{link-to 'Next' (query-params page=nextPage)}}
            {{else}}
            Next
            {{/if}}
        </p>
    
        <h3>Sorting by {{sortBy}}</h3>
        <form {{action 'updatePageSize' on='submit'}}>
        Page size:
        {{input value=newPageSize type="number"}}
        {{input type="submit" value="Change"}}
    
        </form>
        <table>
            <thead>
            <tr>
                <th>
                    {{linkTo "First Name" (query-params sortBy="firstName")}}
                </th>
                <th>
                    {{linkTo "Last Name" (query-params sortBy="lastName")}}
                </th>
                <th>
                    {{linkTo "Location" (query-params sortBy="location")}}
                </th>
            </tr>
            </thead>
            <tbody>
            {{#each paged}}
            <tr>
                <td>{{firstName}}</td>
                <td>{{lastName}}</td>
                <td>{{location}}</td>
            </tr>
            {{/each}}
            </tbody>
        </table>
    
    
    
    </script>
    
    <script>
        App = Ember.Application.create();
    
        App.ApplicationRoute = Ember.Route.extend({
            model: function() {
                var FIRST_NAMES = ["Alex", "Kris", "Luke"];
                var LAST_NAMES =  ["Matchneer", "Selden", "Melia"];
                var people = [];
                for (var i = 0; i < 400; i++) {
                    people.push(
                            {
                                firstName: FIRST_NAMES[Math.floor(Math.random() * 3)],
                                lastName:  LAST_NAMES[Math.floor(Math.random() * 3)],
                                location:  FIRST_NAMES[Math.floor(Math.random() * 3)] + "ville"
                            });
                }
                return people;
            }
        });
    
        // Helper computed property used by nextPage
        // and previousPage.
        var incrementPage = function(amt) {
            return Ember.computed('page', 'numPages', function() {
                var newPage = this.get('page') + amt;
                if (newPage <= this.get('numPages') &&
                        newPage >= 1) {
                    return newPage;
                }
            });
        };
    
        App.ApplicationController = Ember.ArrayController.extend({
            queryParams: ['sortBy', 'page', 'pageSize'],
            page: 1,
            pageSize: 25,
            sortBy: 'firstName',
    
            sortProperties: function() {
                return [this.get('sortBy')];
            }.property('sortBy'),
    
            pages: function() {
                var pageSize = this.get('pageSize'),
                        l = this.get('model.length'),
                        pages = Math.ceil(l / pageSize),
                        pagesArray = [];
    
                for(var i = 0; i < pages; i ++) {
                    pagesArray.push(i + 1);
                }
    
                return pagesArray;
            }.property('pageSize', 'model.length'),
    
            numPages: function() {
                var pageSize = this.get('pageSize'),
                        l = this.get('model.length');
                return Math.ceil(l / pageSize);
            }.property('pageSize'), //总页数
    
            paged: function() {
                var page = this.get('page') - 1,
                        pageSize = this.get('pageSize'),
                        start = page * pageSize,
                        end = start + pageSize;
                return this.get('arrangedContent').slice(start, end);
            }.property('page', 'arrangedContent', 'pageSize'),
    
            previousPage: incrementPage(-1),
            nextPage:     incrementPage(1),
    
            // We don't want updates to the newPageSize
            // input field to immediately update `pageSize`
            // (and therefore the URL), so we make this
            // binding read-only (and later explicitly
            // write `pageSize` inside the `updatePageSize`)
            newPageSize: Ember.computed.oneWay('pageSize'),
    
            actions: {
                updatePageSize: function() {
                    this.set('pageSize', parseInt(this.get('newPageSize'), 10));
                }
            }
        });
    </script>
    
    
    </body>
    </html>
      

    链接http://emberjs.jsbin.com/ucanam/4075#/?pageSize=16&sortBy=location

  • 相关阅读:
    IllegalStateException
    TimeUnit简析
    Cron表达式
    任务调度之Timer与TimerTask配合
    Executor简析
    this逃逸
    SQL、SQL Server、MySQL与Oracle
    数据库与实例
    vw 、vh、vmin 、vmax
    逻辑(内存)分页与物理分页
  • 原文地址:https://www.cnblogs.com/xjinza/p/4708956.html
Copyright © 2020-2023  润新知