使用动态参数加载存储

时间:2015-01-22 13:50:57

标签: extjs extjs4

我想根据树节点选择加载记录并在表单中显示。但我的商店没有加载到我的控制器处理程序中。我应该在哪里以及如何使用我的参数加载商店?

        var me = this;
        var idTag= me.getMyNode();
        me.getTagStore().on('beforeload', function(store, operation, eOpts) {
            operation.params = {
                idTag: idTag
            };
        }, me);
        // it will not be loaded here and I get rec=undefined
        var rec = me.getTagStore().load().getAt(0);
        me.getMyForm().loadRecord(rec);

这是我的商店:

Ext.define('TTT.store.Tag', {
    extend: 'Ext.data.Store',
    requires: [
        'TTT.model.Tag'
    ],
    model: 'TTT.model.Tag',

    proxy: {
        type: 'ajax',
        url: 'tag/find.json',
        reader: {
            type: 'json',
            root: 'data'
        }
    }
    ,baseParams: {
        idTag: 30
    },
});

1 个答案:

答案 0 :(得分:1)

您可以在需要时手动调用load方法并传递所需的任何参数,如下所示:

me.getTagStore().load({
    params: {
        idTag: idTag
    }
});

当你调用它时,你应该在浏览器的控制台窗口中看到你的请求参数。

在上面的代码中,这一行:

// it will not be loaded here and I get rec=undefined
var rec = me.getTagStore().load().getAt(0);

加载操作需要一点时间,但并不多,但确实需要一点时间。您需要在商店中收听加载事件才能执行此类操作,这是一个示例:

me.getTagStore().load({
    params: {
        idTag: idTag
    },
    scope: this,
    callback: function(records, operation, success) {
        // the operation object
        // contains all of the details of the load operation
        console.log(records);
    }
});

查看store的文档。