我在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");
}
},
});
请给我建议......
答案 0 :(得分:1)
首先,如果我正确理解您的代码 - 您将用户及其密码加载到客户端。这是一个巨大的安全风险,因为任何人都可以看到这些数据(只需点击几下鼠标)。
其次,LocalStorage
没有type
配置。
第三,如果你真的得到了这一行的错误(而不是调用堆栈中的某些子行):
var lsProxy = new Ext.data.proxy.LocalStorage({
只能Ext.data.proxy
不在范围内。
尝试将此配置添加到您的控制器:
requires: ['Ext.data.proxy.LocalStorage'],
让我们知道会发生什么。