2

我试图在 Extjs 中使用直接存储
将代码传给我的存储

Ext.define('IDE.store.Files', {
    extend: 'Ext.data.Store',
    proxy: {
        type: 'direct',
        api: {
            create:Files.AddNew,
            read:Files.GetFile,
            update:Files.Update,
            destroy:Files.Delete,
            //load:Files.GetFile
        },
        paramOrder:'Path'
    },
    model:'IDE.model.File'
})

模型的代码是

Ext.define('IDE.model.File', {
    extend: 'Ext.data.Model',
    fields: [
        { name: 'Path', type: 'string' },
        { name: 'Name', type: 'string' },
        { name: 'Extention', type: 'string' },
        { name: 'Content', type: 'string' }
    ],
    idProperty:'Path',
    store:'IDE.store.Files'
})

如您所见,idProperty以下Path
代码段给出错误

//this.getStore('IDE.store.Files').load(path, { sucess: function (file) {
//                console.log(file.get('Content'));           
//            } });
this.getStore('IDE.store.Files').load(path);

在这里我path从某处得到并试图从错误的特定路径加载文件

 Ext.data.proxy.Direct.doRequest(): No direct function specified for this proxy

现在的问题是 extjs 的文档还不够,在我搜索的所有地方,我只能apiproxy. 1.create
2.read
3.update
4.destroy 我缺少哪个 api


或者
我需要在哪里提供直接功能load()

4

1 回答 1

1

我可以用我的代码解决多个问题,所以只是放在这里寻求社区的帮助。
1.我调用加载函数的方式是正确的..它只是不接受参数,而是一个具有范围和回调的整个对象,所以可能是错误说 http://docs.sencha.com/ext-js/ 4-0/#!/api/Ext.data.Store-method-load
2. 如果我只是删除api.. 并使用directFn配置选项,那么它似乎可以工作..

代码:

Ext.define('IDE.store.Files', {
    extend: 'Ext.data.Store',
    proxy: {
        type: 'direct',
        directFn: Files.GetFile, // <--- new line of code
        api: {
            create:Files.AddNew,
            //read:Files.GetFile, // <--- old line of code
            update:Files.Update,
            destroy:Files.Delete
        },
        paramOrder:'Path'
    },
    model:'IDE.model.File'
})
于 2012-06-18T07:25:59.963 回答