如何在extjs4中动态调用set代理类型?
我在extjs4 MVC中工作。我将陷入这样一个境地:我将动态地将代理类型设置为“localstorage”,在这里我将替换在模型类中声明的代理类型“ajax”。 当我想在客户端存储数据时,我正在将我的模型代理类型从ajax更改为locastorage。但是当我在特定的模型对象上调用save()方法时,数据将被保存到服务器端,而不是保存在客户端。请给我一些建议 1) 这是我的模型数据类如何在extjs4中动态调用set代理类型?,extjs,extjs4,extjs-mvc,extjs4.2,Extjs,Extjs4,Extjs Mvc,Extjs4.2,我在extjs4 MVC中工作。我将陷入这样一个境地:我将动态地将代理类型设置为“localstorage”,在这里我将替换在模型类中声明的代理类型“ajax”。 当我想在客户端存储数据时,我正在将我的模型代理类型从ajax更改为locastorage。但是当我在特定的模型对象上调用save()方法时,数据将被保存到服务器端,而不是保存在客户端。请给我一些建议 1) 这是我的模型数据类 Ext.define('Am.model.sn.UserModel',{ extend: 'Ext.d
Ext.define('Am.model.sn.UserModel',{
extend: 'Ext.data.Model',
fields: ['userId','firstName','middleName','lastName','languageId','primaryEmail','birthDate','password','securityQuestionId','securityQuestionAnswer','isMale','creationTime','ipAddress','confirmationCode','userStatusId',],
proxy:
{
type:'ajax',
api:
{
read:'index.php/SocialNetworking/user/AuthenticateLogin',
create:'index.php/SocialNetworking/user/AuthenticateLogin',
},//end of api
reader:
{
type:'json',
},//end of reader
writer:
{
type:'json',
root:'records',
},//End of writer
}//end of proxy
});
2) 这是我的一些控制器文件代码
Ext.define('Am.controller.sn.UserController',
{
extend:'Ext.app.Controller',
stores:['sn.UserStore','sn.SecurityquestionStore'],
models:['sn.UserModel','sn.SecurityquestionModel'],
views:['sn.user.Login','sn.user.Registration','sn.user.ForgetMyKey','sn.user.SecurityQuestion','sn.user.KpLogin'],
-----
----
init:function()
{
--------
}
remeberMe:function()
{
console.log("check box selected");
var email=this.getUserName().getValue();
var password=this.getPassword().getValue();
var objCheckBox=Ext.getCmp('checkbox');
if(objCheckBox.getValue()==true)
{
window.localStorage.clear();
//code for stoaring data at local storage
var modelObject = Ext.ModelManager.create(
{
primaryEmail:email,
password: password,
}, 'Balaee.model.sn.UserModel');
proxy=modelObject.getProxy();
//proxy=modelObject.getProxy();
proxy.type='localstorage';
//proxy.set(type,'localstorage');
proxy.id='rememberMe';
//proxy.set(id,'rememberMe');
//modelObject.setProxy(proxy);
//console.log("models proxyyyyyyyyyy="+modelObject.getProxy().type+""+modelObject.getProxy().id);
modelObject.setProxy(proxy);
//
I am also trying this but not work
//Ext.apply(proxy,{type:'localstorage',id:'remember' });
modelObject.save();
// code to hide login window
//var obj=Ext.ComponentQuery.query('#loginId');
//console.log("Object name = "+obj[0].id);
//obj[0].hide();
}//end of if statement
else
{
console.log("check box is not selected");
}//end of else statement
},//End of rememberMe function
});
请给我一些建议。您可以使用
Ext.data.Model
上定义的setProxy()
方法设置代理。为了更好地理解切换项目,我创建了一个示例代码
//Defining model
Ext.define('User', {
extend: 'Ext.data.Model',
fields: [{name: 'name', type: 'string'}]
});
//creation of ajax proxy
var ajaxProxy = new Ext.data.proxy.Ajax({
id: 'ajaxp',
reader: 'json'
});
//creation of local storage proxy
var lsProxy = new Ext.data.proxy.LocalStorage({
id: 'localp',
reader: 'json'
});
//Create instance of model
var user = Ext.create('User', {
name : 'Pravin Mane',
proxy: ajaxProxy //sets the ajax proxy
});
//Somewhere in your code
user.setProxy(lsProxy); //sets the localstorage proxy
我还设置了proxy->modelObject.setProxy(proxy);但它不起作用。请提供创建两个独立项目所需的更多信息,并使用
setProxy()
像@Aashray建议的那样交换它们。如果他们共享配置,你可以制作一个基本代理并派生出两个专门的代理。你能给我解释一下吗……是的!老板,这很有效。。但是我在var lsproxy=new Ext.data.proxy.LocalStorage时出错({I Get error undefined不是本地存储初始化时的函数使用Ext.create('Ext.data.proxy.LocalStorage'),{
它工作得很好….!它也可以与var lsproxy=new Ext.data.proxy.LocalStorage一起工作({,我错了,我没有包括要求:['Ext.data.proxy.LocalStorage']这段代码。再次非常感谢。。。