Extjs4 使用store的post方法

Extjs4 使用store的post方法

引用官网的一句话

  Now when we call store.load(), the AjaxProxy springs into action, making a request to the url we configured (‘users.json‘ in this case). As we‘re performing a read, it sends a GET request to that url (see actionMethods to customize this - by default any kind of read will be sent as a GET request and any kind of write will be sent as a POST request).

我们点进去看看它源码:

Ext.define(‘Ext.data.proxy.Ajax‘, {
    requires: [‘Ext.Ajax‘],
    extend: ‘Ext.data.proxy.Server‘,
    alias: ‘proxy.ajax‘,
    alternateClassName: [‘Ext.data.HttpProxy‘, ‘Ext.data.AjaxProxy‘],

    /**
     * @property {Object} actionMethods
     * Mapping of action name to HTTP request method. In the basic AjaxProxy these are set to ‘GET‘ for ‘read‘ actions
     * and ‘POST‘ for ‘create‘, ‘update‘ and ‘destroy‘ actions. The {@link Ext.data.proxy.Rest} maps these to the
     * correct RESTful methods.
     */
    actionMethods: {
        create : ‘POST‘,
        read   : ‘GET‘,
        update : ‘POST‘,
        destroy: ‘POST‘
    },

    // Keep a default copy of the action methods here. Ideally could just null
    // out actionMethods and just check if it exists & has a property, otherwise
    // fallback to the default. But at the moment it‘s defined as a public property,
    // so we need to be able to maintain the ability to modify/access it.
    defaultActionMethods: {
        create : ‘POST‘,
        read   : ‘GET‘,
        update : ‘POST‘,
        destroy: ‘POST‘
    },  ... ... ...}

到这里,我想你的思路也很清晰了.具体做法如下


1.覆盖 actionmathods 方法:

Ext.define(‘Sencha.store.Users‘, {
    extend: ‘Ext.data.Store‘,

    config: {
        model: ‘Sencha.model.Users‘,
        autoLoad: true,
        proxy: {
            type: ‘ajax‘,
            actionMethods: {
                create : ‘POST‘,
                read   : ‘POST‘, // by default GET
                update : ‘POST‘,
                destroy: ‘POST‘
            },
            url: ‘teams.json‘
        }
    }
});
var mystore = Ext.create(‘Ext.data.Store‘, {
        // 分页大小
        pageSize : 20,
        model : ‘mydata‘,
        storeId : ‘mystore‘,
        proxy : {
            type : ‘ajax‘,
            actionMethods : {
                create : ‘POST‘,
                read : ‘POST‘, // by default GET
                update : ‘POST‘,
                destroy : ‘POST‘
            },
            url : mj.basePath + ‘service/user!datagrid.cy‘,
            reader : {
                root : ‘leafData‘,
                totalProperty : ‘totalRows‘
            }
        },
        sorters : [ {
            property : ‘createTime‘, // 排序字段
            direction : ‘desc‘// 默认ASC
        } ]
    })

2. 覆盖 defaultActionMethods 方法:

var mystore = Ext.create(‘Ext.data.Store‘, {
        // 分页大小
        pageSize : 20,
        model : ‘mydata‘,
        storeId : ‘mystore‘,
        proxy : {
            type : ‘ajax‘,
            defaultActionMethods : {
                create : ‘POST‘,
                read : ‘POST‘, // by default GET
                update : ‘POST‘,
                destroy : ‘POST‘
            },
            url : mj.basePath + ‘service/user!datagrid.cy‘,
            reader : {
                root : ‘leafData‘,
                totalProperty : ‘totalRows‘
            }
        }

3. or define your own proxy class

Ext.define(‘Sencha.data.PostAjax‘, {
    extend: ‘Ext.data.proxy.Ajax‘,
    alias: ‘proxy.postproxy‘, // must to get string reference
    config: {
       actionMethods: {
            create : ‘POST‘,
            read   : ‘POST‘, // by default GET
            update : ‘POST‘,
            destroy: ‘POST‘
        },
    }
}

Ext.define(‘Sencha.store.Teams‘, {
    extend: ‘Ext.data.Store‘,

    config: {
        model: ‘Sencha.model.Team‘,
        autoLoad: true,
        proxy: {
            type: ‘ajaxpost‘
            url: ‘teams.json‘
        }
    }
});

参考资料:  http://blog.csdn.net/henriezhang/article/details/8978919  

时间: 2024-10-06 00:40:45

Extjs4 使用store的post方法的相关文章

Extjs 动态修改gridPanel列头信息以及store数据的方法

1 /*******************************checkbox按钮 历史报警信息**************************************/ 2 var checkboxHistoryModule = new Ext.form.Checkbox({ 3 id : "alarmHistoryInfoCheck", 4 name : "alarmHistoryInfoCheck", 5 //width : 70, 6 boxLab

EXTJS4自学手册——EXT基本方法、属性(mixins多继承、statics、require)

1.mixins 说明:类似于面向对象中的多继承 <script type="text/javascript"> Ext.onReady(function () {//创建一个类,类名:TextClass,具有两个属性:A.B Ext.define('TextClass', { A: 'a', B: 'b' });//创建一个类,类名:TextClass,具有两个属性:A.B Ext.define('TextClass2', { C: 'c', write: functio

Win10系统清理Windows Store缓存的方法

Win10系统的应用商店相比之前有了许多的更新,微软也成立了专门的团队准备对应用商店进行完善,但是我们在使用应用商店的过程中会产生许多缓存文件,占用电脑空间资源,也会影响电脑的运行速度.下面<A href="w ww.hxtzhushou.com/">好系统重装助手</A>就为大家介绍一下利用命令提示符来清理应用商店缓存文件的方法. Win10系统清理应用商店缓存的方法 1.在桌面左下角搜索命令提示符,然后右键点击并选择"以管理员的身份运行"

Extjs4中的store

Extjs 4引入新的数据包,其中新增了不少新类并对旧有的类作出了修整.使数据包更强大和更容易使用. 本章我们将学习一下内容: 2.1. 概述新特性 Extjs4的数据包引入了如Model类的新特性.同时对Store和Proxy类进行了修整.大部分的修整都是向后兼容的.最大的变化是在Record.Store和Proxy类中.Extjs4的数据包是其中一个与Sencha Touch共享的包. Model是数据包中其中一个最重要的类.它的前身是Record类.现在我们可以通过Model类来代表现实对

ExtJs4学习(七)MVC中的Store

Ext.data.Store是extjs中用来进行数据交换和数据交互的标准中间件,不管是Grid还是ComboBox,都是通过它 实现数据读取.类型转换.排序分页和搜索等操作的. Ext.define('User', { extend: 'Ext.data.Model', fields: [ {name: 'loginname', type: 'string'}, {name: 'ip', type: 'string'} ] }); Store既能够从本地数组中读取数据,也能够从server远程

ExtJS4教程—-Ext.onReady、Ext.define、Ext.create基础方法(转)

Ext.onReady 说明:onReady内的语句块会在页面上下文加载后再执行 例子: <html> <head> <title>Index</title> <link href="http://www.cnblogs.com/Scripts/ext-4.0.7-gpl/ext-4.0.7-gpl/resources/css/ext-all.css" rel="stylesheet" type="te

iOS 在应用内展示App Store 【StoreKit,SKStoreProductViewController】

出于什么样的原因你会希望用户从你的iOS app中进入App Store呢?可能你想用户去App Store 为你的应用评分,也可能你希望用户看到你其他的iOS app.iOS 6引入了SKStoreProductViewController类,可以让用户在不离开当前应用的前提下展示App Store中的其他产品. Store Kit SKStoreProductViewController类是Store Kit框架的一部分.SKStoreProductViewController使用起来非常简

ExtJS4 Ext.onReady、Ext.define、Ext.create的区别与联系 http://blog.sina.com.cn/s/blog_48d7f92901011cfn.html

1.Ext.onReady 说明:onReady内的语句块会在页面上下文加载后再执行. 2.Ext.define 说明:创建类,可以继承其他类,也可以被继承. 例子1: <script type="text/javascript"> Ext.onReady(function () { //创建一个类,类名:TextClass,具有两个属性:A.B Ext.define('TextClass', { A: 'a', B: 'b' }); //实例化类 var textClas

Mac OS使用技巧十二:解决APP Store更新、下载出错的问题

前面介绍了Mac OSX那么多强大的功能和各式各样的使用技巧,那么苹果系统有没有让人头疼的地方呢?恐怕APP Store的下载问题一直是困扰许多用户的永恒问题,为什么有的时候就可以下,为什么有的时候就不可以下?可能是因为网络问题,可能是因为系统bug,可能是因为没有翻墙,具体原因我们也不明了.最常见就是下面的情景,实际情况是,你特么去已购页面再试也是没用的. 这里我在网络上积累的多种常用方法和一些自己亲身的体会,来教大家几种解决APP Store无法下载的方法. 一.首先是修改DNS,系统偏好