Extjs4如何构造store基类
目标:重写一个BaseStore的基类,它继承自Ext.data.Store基类。 autoLoad:true/false 是否自动加载,true时创建store即自动加载,一般适合get方式;false时一般需要通过触发事件给store赋参数,然后load(),一般适合post请求方式。
remoteSort:true/false 是否远程服务器排序,默认false,即在客户端排序。
sortOnLoad:true/false 默认true,所有加在store上的排序操作都在数据加载完之后,改变数据的事件触发之前进行,如果remoteSort为true,则会忽略该字段功能。
pageSize:number 默认25,每页加载多少行数据,可用于nextPage和previousPage方法实现分页功能。
model:string store对应的model,一般必填,最重要的参数。
fields:object 如果没有model,则可以直接给fields赋值,会根据fields自动创建对应的model。
proxy:数据代理方式 proxy基类又有很多参数和属性,以type:'Ajax'为例:
(1) batchActions:true/false 是否设置启用批量操作,默认为true。批量操作就是对Store实例中的记录作CUD(create、update、destroy)后,执行“store实例.sync()”批量将操作发送到服务端。
(2) batchOrder: 以逗号作分隔符的方式设置批量操作的顺序,默认为"create,update,destroy"。仅batchActions为true时有效。
(3) reader: 读取服务器端数据的方式,常用'json'方式,与之对应的是writer:从客户端向服务器端发送数据时的数据形式,常用'json'。
(4) actionMethods: http请求方式,get一般read操作,post一般create、update、destroy操作。
(5) api:增删改查对应的后台路径。
(6) extraParams:object 前台往后台发送请求时需要的参数:比如:
param:{date:myDate,
time:myTime,
num:myNum
}
myStore.extraParams=param;这样就可以把参数发送给后台了。
(5) Ext.data.reader.Json很常用,很重要,它的重要参数和属性:
- idProperty:从数据源读取的记录的id属性名,默认与Model的idProperty一致;
- messageProperty:从数据源读取的数据的message属性名,默认为message;
- root:从数据源读取的数据的记录入口属性名,默认为空字符串;
- successProperty:从数据源读取的数据的success属性名,默认为success;其值为true则表示成功,为false且存在errors属性则表示服务端失败,为false且无errors属性则表示链接失败。
- totalProperty:从数据源读取的数据的total属性名,默认为total;表示总记录数目。
(6) Ext.data.writer.Json 参数和属性:
1. allowSingle:true/false 默认true,只有一组数据时不用数组形式,false时都用数组形式。
2. writeAllFields:设置为true时将记录的所有字段均发送到数据源(客户端或服务端);false时则仅发送标记为modified(修改过的)的字段到数据源。默认值为true。注意被标记为persist为false的字段将不发送到数据源。
以上就是和store基类有关的经常用到的属性和参数,自己可以根据这些属性构造适合自己的基类。
Ext.define('MyExt.store.Base.BaseStore', {
extend: 'Ext.data.Store',
requires: ['MyExt.store.JsonReader'],
autoLoad: true,
remoteSort: false,
sortOnLoad: false,
pageSize: 50,
model: '', //必填属性 model
readAction: 'get', //请求读取时的方式post、get
batchActions: true,
constructor: function (config) {
Ext.apply(this, config);
var me = this;
var model = Ext.create(me.model, {});
var multiidProperty = false;
if (typeof (model.idProperty) != 'string') {
multiidProperty = true;
}
me.proxy = {
type: "ajax",
api: model.api,
reader: Ext.create('MyExt.store.JsonReader', {
idProperty: model.idProperty
}),
writer: {
type: 'json',
writeAllFields: multiidProperty,
allowSingle: false
},
actionMethods: {
read: me.readAction
},
batchActions: me.batchActions,
method: 'post'
};
this.callParent([config]);
return this;
},
setParam: function (obj) {
Ext.apply(this.proxy.extraParams, obj);
if (this.pageSize != -1) this.currentPage = 1;
}
});
Ext.define('MyExt.store.JsonReader', {
extend: 'Ext.data.reader.Json',
type: 'json',
root: 'data',
totalProperty: 'count',
successProperty: 'success',
messageProperty: 'message',
constructor: function (config) {
Ext.apply(this, config);
this.callParent([config]);
return this;
}
});
这样就可以很方便的用自己写的BaseStore基类了。
未完待续。。。
Extjs4如何构造store基类的更多相关文章
- C/C++ 多继承{虚基类,虚继承,构造顺序,析构顺序}
C/C++:一个基类继承和多个基类继承的区别 1.对多个基类继承会出现类之间嵌套时出现的同名问题,如果同名变量或者函数出现不在同一层次,则底层派生隐藏外层比如继承基类的同名变量和函数,不会出现二义性, ...
- 从汇编看c++中含有虚基类对象的析构
c++中,当继承结构中含有虚基类时,在构造对象时编译器会通过将一个标志位置1(表示调用虚基类构造函数),或者置0(表示不调用虚基类构造函数)来防止重复构造虚基类子对象.如下图菱形结构所示: 当构造类B ...
- C++ | 继承(基类,父类,超类),(派生类,子类)
转载:https://blog.csdn.net/Sherlock_Homles/article/details/82927515 文章参考:https://blog.csdn.net/war1111 ...
- C++类继承中,基类/当前对象属性/当前对象的构造顺序
[1]中提到,规范的派生类构造函数三个要点: 首先创建基类对象 应通过成员初始化列表,创建基类对象 应该初始化本派生类新增的成员变量 那在构造派生类实例的过程中,其基类(以及多继承的时候多个基类)/当 ...
- C++类继承--构造函数时先构造基类
以下说明继承类函数构造时,先构造基类: 析构基类时,若没加上virtual,只析构基类,不析构派生类: 析构派生类时,同时会析构基类: 1. 基类析构函数有virtual #include <s ...
- c# 衍生类和基类的构造顺序
public class MyDeriveClass :MyBaseClass { public MyDeriveClass() :base() { } int derive_int = 1; } p ...
- Filter组件开发中的SDK基类分析
DirectShow SDK提供了一套开发Filter的基类源代码.基于这些基类开发Filter将大大简化开发过程. 1.CBaseObject 大部分SDK类都从CBaseObject类(参见com ...
- Caffe源码理解3:Layer基类与template method设计模式
目录 写在前面 template method设计模式 Layer 基类 Layer成员变量 构造与析构 SetUp成员函数 前向传播与反向传播 其他成员函数 参考 博客:blog.shinelee. ...
- 基于SqlSugar的开发框架循序渐进介绍(10)-- 利用axios组件的封装,实现对后端API数据的访问和基类的统一封装处理
在SqlSugar的开发框架的后端,我们基于Web API的封装了统一的返回结果,使得WebAPI的接口返回值更加简洁,而在前端,我们也需要统一对返回的结果进行解析,并获取和Web API接口对应的数 ...
随机推荐
- ubuntu14.04 apt-get install找不到软件,更换源解决
安装14.04后,有时使用apt-get命令安装程序,会提示找不到程序,这是因为软件源不正确,网上说的换163的.中科大的.阿里的等等,我在更新源的时候都会出错,一般是报404错误,网上也没找到好的办 ...
- Educational Codeforces Round 7 B
Description You are given the current time in 24-hour format hh:mm. Find and print the time after a ...
- 如何用css让一个容器水平垂直居中
方法一: 以前设置里面的绿div总是会使用{position:absolute;left:50%;top:50%;margin-left:-div宽度的一半;margin-top:-div高度的一半} ...
- 设置input的样式
css中的 ” 七层重叠法 ” :即网页内容先后顺序分别为:背景边框,负值z-index,display:block,浮动,display:inline-block,z-index:auto,正值z- ...
- TP框架中D方法和M方法
D()和M()方法的区别: D和M的区别主要在于 M方法不需要创建模型类文件,M方法不会读取模型类,所以默认情况下自动验证是无效的,但是可以通过动态赋值的方式实现 而D方法必须有创建模型类. 我们可以 ...
- 协议 + socket import 和 form xx import *的区别 028
一 . 网络通信协议(了解) 1 . osi 七层协议 (最好记住 面试会问) 应表会传网数物(应用层 表示层 会话层 传输层 网络层 数据链路层 物理层) 2 .tcp/ip五层 或 tcp/ip四 ...
- 逐行创建、读取并写入txt(matlab) && 生成文件夹里文件名的.bat文件
fidin=fopen('C:\Users\byte\Desktop\新建文件夹 (4)\tr4.txt','r'); fidout=fopen('C:\Users\byte\Desktop\新建文件 ...
- Vue.js-----轻量高效的MVVM框架(一、初识Vue.js)
1.什么是Vue.js? 众所周知,最近几年前端发展非常的迅猛,除各种框架如:backbone.angular.reactjs外,还有模块化开发思想的实现库:sea.js .require.js .w ...
- Java程序员进阶架构师推荐阅读书籍
[IT168 技术]作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从.我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些 ...
- 使用cucumber & selenium实现一个简单的bddtest
1.Cucumber介绍 + feature : read requirement +scenario : testing situation,including + Given/ + when/ + ...