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

时间: 2024-10-13 04:02:31

Emberjs 分页的相关文章

python__Django 分页

自定义分页的类: #!/usr/bin/env python # -*- coding: utf-8 -*- # Created by Mona on 2017/9/20 from django.utils.safestring import mark_safe class Paginator: ''' 页码的格式依赖于bootstrap: 使用案例: from django.shortcuts import render,redirect,HttpResponse from app01.mod

ajax+分页

<!DOCTYPE html><html><head lang="zh-cn"><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"><meta http-equiv="X-UA-Compat

使用插件bootstrap-table实现表格记录的查询、分页、排序等处理

在业务系统开发中,对表格记录的查询.分页.排序等处理是非常常见的,在Web开发中,可以采用很多功能强大的插件来满足要求,且能极大的提高开发效率,本随笔介绍这个bootstrap-table是一款非常有名的开源表格插件,在很多项目中广泛的应用.Bootstrap-table插件提供了非常丰富的属性设置,可以实现查询.分页.排序.复选框.设置显示列.Card view视图.主从表显示.合并列.国际化处理等处理功能,而且该插件同时也提供了一些不错的扩展功能,如移动行.移动列位置等一些特殊的功能,插件可

优化LIMIT分页

在系统中需要分页的操作通常会使用limit加上偏移量的方法实现,同时加上合适的order by 子句.如果有对应的索引,通常效率会不错,否则MySQL需要做大量的文件排序操作. 一个非常令人头疼问题就是当偏移量非常大的时候,例如可能是limit 10000,20这样的查询,这是mysql需要查询10020条然后只返回最后20条,前面的10000条记录都将被舍弃,这样的代价很高.如果所有的页面被访问的频率相同,那么这样的查询平均需要访问半个表的数据.要优化这样的查询,要么实在页面中限制分页的数量,

Ajax实现无刷新分页

注:本文中使用到的一些类库在前面文章都能找到源代码,我会在文中指明链接所在,为了缩短文章篇幅,由此带来的阅读不便,敬请谅解. 本文讲解 Ajax 实现无刷新分页.实现原理.代码展示.代码下载. 这里需要说明一些知识: 1.Ajax 无刷新页面的好处:提供良好的客户体验,通过 Ajax 在后台从数据库中取得数据并展示,取缔了等待加载页面而出现的空白状态: 2.那么,Ajax 无刷新页面是运行在动态页面(.PHP)?还是静态页面(.html/.htm/.shtml)?答案是:静态页面: 3.实现原理

关于分页SQL的小总结

findPage 和findPageTotal条件分页中的条件 较为复杂点的关联查询 有取别名的 <select id="findPage" resultMap="MinOrderInfo" parameterType="map"> SELECT o.*,w.name buyName,w.MOBILE buyMobile,aa.name sellName,aa.MOBILE sellMobile,rs.CAR_BRAND_NAME c

webform:分页组合查询

一个简单的分页组合查询页面 /// <summary> /// 查询方法 /// </summary> /// <param name="tsql">SQL语句</param> /// <param name="hh">哈希表</param> /// <returns></returns> public List<Goods> Select(string un

TODO:数据库优化之分页

本文的例子是以MongoDB数据库为准,其它数据库各位也可以举一反三进行优化. 在MongoDB中分页使用 a.skip(n)跳过前n个匹配的文档: b.limit(m)返回m个结果,要是匹配的结果不到m个,则返回匹配数据量的结果,m是指定上限数量,而不是下限数量: c.sort({"name": 1,"address":-1}),1表示升序,-1表示降序. 使用skip跳过少量的文档还可以.但是数据量非常多的话,skip就会变得非常慢,每个数据库都会有这种情况,所

WebForm 分页与组合查询

1.封装实体类 2.写查询方法 //SubjectData类 public List<Subject> Select(string name) { List<Subject> list = new List<Subject>(); cmd.CommandText = "select *from Subject where SubjectName like @a "; cmd.Parameters.Clear(); cmd.Parameters.Add