我试图在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的文档不够,我搜索到的任何地方我都只能看到api
proxy
对象中的4个api。
哪个是
1.创建
2.read
3.update
4.destroy
哪个api我错过了?或
我需要在哪里为load()
答案 0 :(得分:1)
我可以通过我的代码找出多个问题,所以只是在这里寻求社区的帮助
1.我调用加载函数的方式是正确的..它只是doest接受参数但是整个对象有范围和回调所以mayb这是错误的说法
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'
})