在ExtJS 6.2.1中,我试图通过使用model.load()函数来获取记录,并且我按照Ext.data.Model doc上的示例,"使用了代理"部分。
这是我的用户模型:
Ext.define('myapp.model.User', {
extend: 'Ext.data.Model',
fields: [
'id',
'name',
'email'
],
proxy: {
type: 'ajax',
api: {
read: '/user'
},
reader: {
type: 'json',
rootProperty: 'data'
}
}
});
在视图中,我试图加载id = 1
的用户 var user = Ext.create('myapp.model.User');
user.load(1,{
//scope: this,
callback: function(record, operation, success) {
Ext.getCmp('name').setHtml(record.get('name'));
Ext.getCmp('email').setHtml(record.get('email'));
}
});
但它没有向/ user / 1发送请求,它向/ user
发送了请求我也尝试了一种不同的方法,在创建用户实例时设置id,并在User模型中引用id,但是它无法获取ID。
如果我在URL中对ID进行硬编码,则可以获得结果,因此主要问题是如何获取ID。
var user = Ext.create('myapp.model.User',{id:1});
user.load({
//scope: this,
callback: function(record, operation, success) {
Ext.getCmp('name').setHtml(record.get('name'));
Ext.getCmp('email').setHtml(record.get('email'));
}
});
proxy: {
type: 'ajax',
api: {
read: '/user/1' // this is working
//read: '/user/' + this.id // undefined
//read: '/user/' + this.get('id') //got error: this.get is not a function
},
reader: {
type: 'json',
rootProperty: 'data'
}
}
这样做的恰当方法是,我是否必须创建商店?
答案 0 :(得分:2)
type:'ajax'
的代理,在尝试获取ID为1的用户时,会向
/user?_dc=1498020013907&id=1
如果您希望它向
发送请求/user/1?_dc=1498020013907
您必须使用type:'rest'
的代理。