Sencha Touch 2.0.1.1本地存储不保存值

时间:2012-11-24 00:26:33

标签: extjs touch local-storage local

我正在尝试存储在本地存储中,而不是存储它。 我需要将两个值作为状态ID和许可证类型存储为1个记录,下次我将更新它。因此,商店将始终拥有如下所示的1条记录。

{
 'stateId': 'NJ',
 'licenseType': 'BDL'
}

我尝试了最近2天,但有不同的选择,但没有存储。 有人可以告诉我代码中可能出现的问题。

注意:我正在尝试使用Chrome浏览器进行测试。

商店代码

Ext.define("Sencha.store.TestParams", {    extend: "Ext.data.Store",
    requires: 
    [
        "Ext.data.proxy.LocalStorage"
    ],
    config: {
        model: "Sencha.model.TestParam",
        autoSync: true,
        proxy: {
            type: 'localstorage',
            id: 'ezdt-test-params'
        }
    }
});

型号代码 代码:

Ext.define("Sencha.model.TestParam",
{
    extend: "Ext.data.Model",
    config:
    {
        idProperty: 'id',
        fields:
        [
            { name: 'id', type: 'int' },
            { name: 'stateId', type: 'string' },
            { name: 'licenseType', type: 'string' }
        ]
    }
});

要保存的实际代码 代码:

var modTestParamInitialValues = Ext.create("Sencha.model.TestParam", {
    id: 'ezdt', //Always Same as there will be only one record.
    stateId: strSelectedState,
    licenseType: strSelectedLicenseType
});
storTestParams.add(modTestParamInitialValues);
storTestParams.sync();

我用来检索商店价值的代码。 始终将其打印为未设置

var storTestParams = Ext.getStore("TestParams");
console.log("storTestParams#####-->" + storTestParams);
//storTestParams.load();
if(null != storTestParams)
{
    var intTestParamCount = storTestParams.getCount();
    if(intTestParamCount == 0)
    { 
        console.log("Not Set");
    }
    else
    { 
        console.log("Set Correctly");
    }
}
else
{ 
    console.log("Set Correctly");
}

我希望我能提供所有细节。如果您需要更多详细信息,请告诉我们。

感谢您的帮助。 约瑟夫

1 个答案:

答案 0 :(得分:3)

不确定你是否认为这一点,因为问题已经过时了。自从我第一次开始使用Sencha Touch 2进行开发以来,我遇到了与localstorage同步的不同麻烦。在同步时帮助我将记录记录到本地存储中的一件事是确保模型实例的dirty属性设置为真正。你可能想尝试一下。请参阅:http://docs.sencha.com/touch/2-1/#!/api/Ext.data.Model-method-setDirty