ExtJs的CRUD操作及sync()的作用

CRUD操作指的是create , update,read , destroy四個操作。指的是對ExtJs的前臺數據Store的增加,修改,加載(load,也可以說是查詢),刪除四個操作。下面先看使用實例,首先要現在store裏面定義api。
 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解釋:
 : Boolean

'true'表示每當對一條Record記錄完成修改後, 都將對Store與Proxy進行同步. 默認爲'false'.

Defaults to: false

最後還有一點需注意的是:除了R是get請求外,CUD操作傳到後臺的數據都是以字符流的形式傳輸的。不是以post/get的方式傳輸的。所以在後臺接收的時候,需要注意。下面給出一段PHP接收CUD傳送的數據的代碼:

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的操作的注意點都在這裏了。不足的我會慢慢補充,求指正


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章