如何在extjs4中动态调用set代理类型?

如何在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

我在extjs4 MVC中工作。我将陷入这样一个境地:我将动态地将代理类型设置为“localstorage”,在这里我将替换在模型类中声明的代理类型“ajax”。 当我想在客户端存储数据时,我正在将我的模型代理类型从ajax更改为locastorage。但是当我在特定的模型对象上调用save()方法时,数据将被保存到服务器端,而不是保存在客户端。请给我一些建议

1) 这是我的模型数据类

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']这段代码。再次非常感谢。。。