记住selectfield sencha touch

Remember selectfield sencha touch

如何store在sencha touch中selectfield,这样当一个字段被select编辑时,任何方法使用的值,但是当页面刷新时,它是自动 select 前一个 selection.

我的代码:

          {
                xtype: 'fieldset',
                items: [{
                    xtype: 'selectfield',
                    id: 'remem',
                    label: 'MY Label',
                    store: 'remem',
                    options: [
                    {
                        text: 'Option1',
                        value: 'a'
                    },
                     {
                        text: 'Option2',
                        value: 'b'
                    }]
}]
}

@developer、@jenson 和我建议您将值保存在 cookie 中,以便在浏览器刷新之间保留该值。如果我没记错的话,Extjs 在实用程序命名空间中提供了一个 cookie 管理器 class。

编辑

对于 Sencha Touch,您实际上应该根据文档使用 LocalStorage 代理 here 文档中有一个示例显示如何保存用户特定信息以供以后检索(刷新后等)

我实际上已经通过在我的应用程序中保存用户显示首选项将其用于我自己的应用程序,因此当他们下次登录时,UI 与他们离开时一样。

店铺:

Ext.define('MyApp.store.UserPreferencesStore', {
    extend: 'Ext.data.Store',

    requires: [
        'MyApp.model.UserPreferencesModel',
        'Ext.data.proxy.LocalStorage'
    ],

    config: {
        model: 'MyApp.model.UserPreferencesModel',
        storeId: 'UserPreferencesStore',
        proxy: {
            type: 'localstorage',
            id: 'userpreferences'
        }
    }
});

型号

Ext.define('MyApp.model.UserPreferencesModel', {
    extend: 'Ext.data.Model',

    requires: [
        'Ext.data.Field'
    ],

    config: {
       fields: [
            {
                name: 'userPrefKey'
            },
            {
                name: 'userPrefValue'
            }
        ]
    }
});

使用此设置,您可以像往常一样为任何其他商店添加记录

store.add({userPrefKey: '01-showMap', userPrefValue: true});

或编辑现有条目

rec = store.findRecord('userPrefKey','01-showMap');
rec.set('userPrefValue',false);

您还必须在要保存更改时在存储上调用 sync(),并且要从本地存储中检索保存的记录,只需调用 load() 就像对任何其他存储一样。

请注意,我的代码是为 Touch 2.3 编写的,因此在最近的 2.4.x 版本中它可能略有变化。但这肯定会让你上路。

将 select 字段值存储到本地存储中,并在刷新页面时将该值分配给 selectField。所以你总是会得到以前的 selected 值。