未捕获的TypeError:undefined不是extjs4中的函数?

时间:2013-03-06 06:52:40

标签: extjs extjs4 extjs4.1 extjs-mvc

我在extjs4 MVC中工作,当我使用本地存储存储数据时遇到问题,我将动态地将代理类型从ajax更改为localStorage。

将数据设置为localstorage后出现错误Uncaught TypeError:undefined不是函数。

我的模特:

Ext.define('Am.model.sn.UserModel',{
    extend: 'Ext.data.Model',
    //idproperty:'userId',//fields property first position pk. 
        fields: ['userId','firstName','middleName','lastName','languageId','primaryEmail','birthDate','password','securityQuestionId','securityQuestionAnswer','isMale','creationTime','ipAddress','confirmationCode','userStatusId']

}); 

我的控制器:

Ext.define('Am.controller.sn.UserController1',
{
    init:function()
    {
        console.log('Initialized Users! This happens before the Application launch function is called'); 
        this.control(
        {
            ...
        });
    },

    remeberMe : function()
    {
        console.log("check box selected");
        var email=this.getUserName().getValue();
        var password=this.getPassword().getValue();
        console.log("email="+email);
        var objCheckBox=Ext.getCmp('checkbox');
        if(objCheckBox.getValue()==true)

        {
            window.localStorage.clear();

            // Here I am getting error Uncaught TypeError: undefined is not a function 
            var lsProxy = new Ext.data.proxy.LocalStorage({
                id: 'localp',
                type:'localstorage',                
            });

            var modelObject = Ext.ModelManager.create(
            {
                primaryEmail:email,
                password: password,
                proxy:lsProxy
            }, 'Balaee.model.sn.UserModel');

            modelObject.setProxy(lsProxy);
            modelObject.save();
        } else {
            console.log("check box is not selected");
        } 
    },
});

请给我建议......

1 个答案:

答案 0 :(得分:1)

首先,如果我正确理解您的代码 - 您将用户及其密码加载到客户端。这是一个巨大的安全风险,因为任何人都可以看到这些数据(只需点击几下鼠标)。

其次,LocalStorage没有type配置。

第三,如果你真的得到了这一行的错误(而不是调用堆栈中的某些子行):

var lsProxy = new Ext.data.proxy.LocalStorage({

只能Ext.data.proxy不在范围内。

尝试将此配置添加到您的控制器:

requires: ['Ext.data.proxy.LocalStorage'],

让我们知道会发生什么。