dgridがストアからのデータの読み込みを完了したかどうかを確認する方法を知っている人はいますか?
私はdgridのOnDemandList.jsでこれを行う方法を見つけようとしてきましたが、残念ながら、現在のdojoの知識を上回っています。
ありがとう
しばらく前にこのソリューションを思いついたのです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
});
dgrid 0.3.5dgrid-refresh-complete
では、結果のレンダリングが終了したときに発行されるイベントを聞くことができます。
OnDemandList / Grid wikiページ:https ://github.com/SitePen/dgrid/wiki/OnDemandList-and-OnDemandGrid