2

dgridがストアからのデータの読み込みを完了したかどうかを確認する方法を知っている人はいますか?

私はdgridのOnDemandList.jsでこれを行う方法を見つけようとしてきましたが、残念ながら、現在のdojoの知識を上回っています。

ありがとう

4

2 に答える 2

3

しばらく前にこのソリューションを思いついたのですdgrid v0.3.0が、ソースを見ると今のところ何も変わっていないように見えるので、ソリューションをv0.3.3に適合させようと思います。

実際の動作をご覧ください:http://jsfiddle.net/phusick/FkANy/

問題は、戻るときに成功dgrid/_StoreMixin::_trackErrorコールバックを定義しないことです。したがって、そのメソッドをオーバーライドし、成功コールバックを定義して、そこで更新イベントを発生させる必要があります。Deferred::when

_RefreshMixinモジュール:

define(["dojo/_base/declare", "dojo/_base/lang", "dojo/_base/Deferred", "dojo/on"], function(declare, lang, Deferred, listen) {

    function emitError(err){
        if(typeof err !== "object"){
            err = new Error(err);
        }
        err.grid = this;

        if(listen.emit(this.domNode, "dgrid-error", {
                grid: this,
                error: err,
                cancelable: true,
                bubbles: true })){
            console.error(err);
        }
    }

    var _RefreshMixin = declare(null, {

        _trackError: function(func){
            var result;

            if(typeof func == "string"){ func = lang.hitch(this, func); }

            try{
                result = func();
            }catch(err){
                emitError.call(this, err);
            }
            return Deferred.when(
                result, 
                // success callback instead of `null` in _StoreMixin:
                lang.hitch(this, function() {
                    // fire 'refresh' event
                    listen.emit(this.domNode, "refresh", {
                        cancelable: true,
                        bubbles: true
                    });
                }),
                lang.hitch(this, emitError)
            );
        }
    });

    return _RefreshMixin;

});

独自のグリッドクラスを宣言し、それをインスタンス化します。

var MyGrid = declare([OnDemandGrid, _RefreshMixin]);
var grid = new MyGrid({ /* params here*/ });

これで、更新イベントを聞くことができます。

grid.on("refresh", function(event) {
    // your handler
});
于 2012-12-04T15:23:43.630 に答える
3

dgrid 0.3.5dgrid-refresh-completeでは、結果のレンダリングが終了したときに発行されるイベントを聞くことができます。

OnDemandList / Grid wikiページ:https ://github.com/SitePen/dgrid/wiki/OnDemandList-and-OnDemandGrid

于 2013-02-21T12:14:19.797 に答える