Dgrid 0.4和dstore:更新UI中的行而不放置请求

时间:2015-03-27 09:22:36

标签: dojo dgrid dstore

在Dgrid 0.3.16中我使用的是Observable商店,当我在商店中的数据发生变化时,我调用了商店通知功能。 (不是'put',因为我只需要一个UI更新,这是一个特定的情况)

store.notify(object, existingId);

我现在已将Dgrid升级到版本0.4,我使用'dstore'作为商店。商店的创建方式如下:

        var store = new declare([ Rest, SimpleQuery, Trackable, Cache, TreeStore ])(lang.mixin({
            target:"/ac/api?fetchview",
            idProperty:"$uniqueid", 
            useRangeHeaders: true
        }, config));

        store.getRootCollection = function (parent, options) {
            return this.root.filter({parent: parent.$position},options);
        };

        store.getChildren = function (parent, options) {
            return this.root.filter({parent: parent.$position},options);
        };

        store.mayHaveChildren = function (item) {
            return item.$iscategory;
        };

        this.collection = store;

如果更改了一行而未调用“put”,如何通知商店?我需要dGrid重新渲染行。

1 个答案:

答案 0 :(得分:5)

dstore遵循的模型更类似于使用onemit方法的典型事件驱动方法。 dstore支持addupdatedelete个事件 - 前两个事件期望一个具有target属性的对象引用该项; delete事件期望具有id属性的对象引用该项的标识。

因此,要通知更新的项目,请致电store.emit('update', { target: updatedItem })

Store methods下记录了emit方法,并在Collection documentation中进一步枚举了事件类型。