当前位置:   article > 正文

Ext3.4源码之Store -> load() 与reload()

extjs load reload
[color=red]1. load()的源码[/color]
// 加载Store的数据load : function(options) {	//1. 自定义的参数	options = Ext.apply({}, options);	//2.删除对象中的callback 和 scope属性,并且保存本次查询的参数	this.storeOptions(options);	//3. 如果是远程排序,则需要设置(服务器端排序)	if(this.sortInfo && this.remoteSort){		var pn = this.paramNames;		options.params = Ext.apply({}, options.params);		options.params[pn.sort] = this.sortInfo.field;		options.params[pn.dir] = this.sortInfo.direction;	}	try {		//4. 发起查询		return this.execute('read', null, options); 	} catch(e) {		this.handleException(e);		return false;	}}


[color=red]2. 关于storeOptions的实现[/color]
// 删除对象中的	callback 和 scope 属性storeOptions : function(o){	o = Ext.apply({}, o);	delete o.callback;	delete o.scope;        // 保存本次查询的参数	this.lastOptions = o;}



[color=red]2. execute()的实现[/color]

/**  * 执行步奏: * 1. 查询执行的动作是否正确 * 2. 内部参数的整合 * 3. 未知 * 4. 部分数据初始化 *    4.1 是read Action 调用beforeload和添加baseParams *    4.2 其他create,update,destroy动作,未知 * 5. 如果需要,则发起请求 * @param action{Object} 动作类型 * @param rs{Object} 未知 * @param options{Object} 传递的参数 * @return 是否有发起查询{true/false} 如果有发起查询,则是true */   execute : function(action, rs, options,  batch) {		//1. 判断该请求是否正确 主要有:create,read,update,destroy 这四个动作        if (!Ext.data.Api.isAction(action)) {            throw new Ext.data.Api.Error('execute', action);        }		//2. 整理参数如果options为空则使用params: {} 空参数        options = Ext.applyIf(options||{}, {            params: {}        });		//3. 未知        if(batch !== undefined){            this.addToBatch(batch);        }        var doRequest = true;	    //4. 部分数据初始化		//4.1 是read Action 调用beforeload和添加baseParams		//一. 先调用beforeload,同时传递对应的参数		//二. 添加基本参数信息        if (action === 'read') {            doRequest = this.fireEvent('beforeload', this, options);            Ext.applyIf(options.params, this.baseParams);        }        else {           //4.2 其他create,update,destroy动作,未知            if (this.writer.listful === true && this.restful !== true) {                rs = (Ext.isArray(rs)) ? rs : [rs];            }            else if (Ext.isArray(rs) && rs.length == 1) {                rs = rs.shift();            }            if ((doRequest = this.fireEvent('beforewrite', 					this, action, rs, options)) !== false) {                this.writer.apply(options.params, this.baseParams, action, rs);            }        }		// 是否要发起请求        if (doRequest !== false) {			//如果是writer,后续补充            if (this.writer && this.proxy.url && !this.proxy.restful && 				!Ext.data.Api.hasUniqueUrl(this.proxy, action)) {                options.params.xaction = action;                }			// 发起一个Ajax请求            this.proxy.request(Ext.data.Api.actions[action], rs, options.params, 				this.reader, this.createCallback(action, rs, batch), this, options);        }        return doRequest;    }



[color=red]5.reload()的实现[/color]
// reload就是使用上次传递的参数重新调用reload但是不包括baseParamsreload : function(options){    this.load(Ext.applyIf(options||{}, this.lastOptions));}
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/322304
推荐阅读
相关标签
  

闽ICP备14008679号