var grid = Ext.create('Ext.tree.Panel', {
store:Ext.create('Ext.data.TreeStore', {
autoLoad:true,
model: 'home.menu',
root:{
menu_id:0,
menu_name:'ROOT'
},
proxy:{
type:'ajax',
api:{
create:'create.action',
update:'update.action',
read:'read.action',
destroy:'destroy.action'
},
reader:{
root:'result',
totalProperty:'totalCount'
}
}
}),
上面代碼的意思是在store中定義當我們對store進行add(),updaterecord(),load(),remove()四個操作時相對應的操作URL。下面是extjsAPI裏面的定義
api : Object
指定的urls中所調用的CRUD,即"create","read","update"和"destroy"操作方法。默認爲:
api: {
create : undefined,
read : undefined,
update : undefined,
destroy : undefined
}
該url的生成基於使用對應的api屬性中所執行[create|read|update|destroy]的動作action, 或者如果爲undefined則默認爲已配置的 Ext.data.Store.url。
示例:
api: {
create : '/controller/new',
read : '/controller/load',
update : '/controller/update',
destroy : '/controller/destroy_action'
}
如果指定的URL對於所給定CRUD動作爲undefined, 那麼CRUD的action請求將指向已配置的url。
下面是使用的DEMO、
修改(update U):
form.getForm().updateRecord(form.getForm().getRecord());
grid.getStore().sync();
刪除(destory D)
var r = form.getForm().getRecord();
r.remove();
grid.getStore().sync();
加載(Read R )
grid.getStore().load();
增加(Create C)
grid.getStore().add(form.getForm().getValues());
grid.getStore().sync();
不懂大家注意到了沒有 在CUD操作後,都有一個sync()操作。如果在store中設置了autoSync:true的話。就可以省略sync()操作。下面是autoSync的API解釋:
autoSync : Boolean
'true'表示每當對一條Record記錄完成修改後, 都將對Store與Proxy進行同步. 默認爲'false'.
Defaults to: false
public function getPut()
{
$raw = '';
$fp = fopen('php://input', 'r');
while ($kb = fread($fp, 1024)) {
$raw .= $kb;
}
$params = json_decode($raw, true);
if (count($params) && !isset($params[0])) {
$params = array($params);
}
$_POST['php_input'] = $raw;
return $params;
}
基本上CRUD的操作的注意點都在這裏了。不足的我會慢慢補充,求指正