0

dgrid/dstore グリッドをリアルタイムで取得しようとしています。私が理解しているように、関数「Observable」は非推奨であり、私にとっては機能しません。

間隔タイマーを使用してグリッドを更新しようとしましたが、グリッド全体が消去され、新しく読み込まれます。消去せずにグリッド全体を「インライン」で更新し、「データの読み込み中」を表示する方法は?

これは私の基本的なコードです:

var timer = setInterval(function() {
  store.invalidate(); // Invalidate the cache
  store.fetch(); // Perform a new request for all items
  grid.refresh(); 
}, 500);
4

1 に答える 1

5

Observable は dstore には存在しませんが、Trackable代わりに使用できる mixin があります。新しいコンテンツがストアからフェッチされたときにグリッドを更新する場合は、 aを使用してから、代わりに使用するためにグリッドに混合dstore/Cacheするキャッシュされたストアを渡すことができます。新しいデータがキャッシュ ストアに追加されるたびに、グリッドにも反映されます。MemoryTrackable

require([
    'dgrid/OnDemandGrid',
    'dstore/Rest',
    'dstore/Memory',
    'dstore/Trackable',
    'dstore/Cache',
    'dojo/domReady!'
], function (OnDemandGrid, Rest, Memory, Trackable, Cache) {
    var restStore = new Rest({
        target: '/mockRequest/'
    });

    var store = Cache.create(restStore, {
        cachingStore: new (Memory.createSubclass(Trackable))()
    });

    var grid = new OnDemandGrid({
        collection: store.cachingStore,
        columns: {
            id: 'ID',
            name: 'Name',
            description: 'Description'
        },
        loadingMessage: 'Loading...'
    }, 'main');
    grid.startup();

    setInterval(function () {
        store.fetch();
    }, 2000);
});
于 2015-03-31T02:55:47.467 に答える