4

問題は、JSON データ ファイル (約 5000 エントリ) からかなりの数のエントリをテーブルの行に読み込もうとしているということです。

jPages やその他のプラグインについては知っていますが、Ember.js にはかなり慣れていないので、これを機能させる Ember の方法があるかどうか知りたいと思いました。エントリの合計量を渡し、設定された量を手動でレンダリングをループすることを考えることができますが、ページネーションが必要な他の領域にはあまり移植できないと思います。

ルーティングを調べる必要がありますか?

4

2 に答える 2

4

だから私はこのようなミックスインの作成に目を向けました

App.PaginationHelper = Em.Mixin.create({
    pageSize: 10,
    totalLines: 20,
    rangeStart: 1,
    rangeStop: function () {
        var rangeStop = get(this, 'rangeStart') + get(this, 'pageSize') - 1;
        totalLines = get(this, 'totalLines');
        if (rangeStop < totalLines) {
            return rangeStop;
        }
        return totalLines;
    }.property(),

    currentPage: function () {
        return get(this, 'rangeStop') / get(this, 'pageSize');
    }.property(),

    totalPages: function () {
        return Math.ceil(get(this, 'totalLines') / get(this, 'pageSize'));
    }.property(),
[...]

このようにして、ビューの各インスタンス化を追加する一意の ID を持つコンテナー div を作成することで、それを再利用したり、単一のページで何度も再利用したりできるため、別のビューを作成しました。 .

したがって、新しい変数を使用して次の行を繰り返すことができますが、templateName を同じにしてテンプレートを再利用します。

var firstCaseOfPaginationViews = Em.View.create({
    templateName: 'pagination'
    [...]
});

firstCaseOfPaginationViews.appendTo('#transaction_pagination');

そして今、ミックスインは、ページネーションが必要なコントローラーに簡単に含めることができます。これが Ember での正しい方法であることを願っています。後でリファクタリングして再訪するまで、この方法を採用するようです。

于 2012-09-05T19:58:34.360 に答える
2

If you look into routing you can do something like (just a concept, not sure if this is the right way)

App = Ember.Application.create({
        Router : Ember.Router.extend({
            root : Ember.Route.extend({
                pages : Ember.Route.extend({
                    route : '/page/:pageNo',
                    deserialize : function (router, params) {
                    var pageNumber = params.pageNo;
                    var contentToBeShown = //slice the relevant- 
                    //part from your content according to pageNo
                    <active>Controller.connectOutlet({
                        name: 'controllername',
                        outletName: 'outletshowingpages',
                        context: //theslicedarray
                        });
                    }
                    //add serialize also
                })
            })
        })
    });
App.initialize();

More routing here : https://github.com/emberjs/ember.js/blob/master/packages/ember-routing/lib/router.js

于 2012-08-29T01:13:22.433 に答える