Есть ли способ загрузить Ext JS ComboBox с последним выбранным параметром локально?

avatar
FrangosChickenSauce
9 августа 2021 в 00:55
78
1
0

Я хочу иметь возможность загружать любую опцию, которая была выбрана последней в моем Ext JS ComboBox, когда я обновляю страницу. В настоящее время с этим кодом ниже он просто загружает первый вариант «все» каждый раз. Я знаю, что есть прокси-сервер localStorage, но не знаю, как реализовать его в этом коде. Вот что у меня ниже:

let stageFilterCombo = Ext.create("Ext.form.field.ComboBox", {
                height: 38,
                cls: "arrowCls ro-dropdown-ui br-5 stageFilterDropdownUI",
                labelAlign: 'left',
                itemId: "PACK_STAGE_FILTER_COMBO",
                labelSeparator: "",
                labelWidth: 15,
                originalIdx: 2,
                hidden: isPackForEntity,
                margin: '0 15',
                displayField: "name",
                valueField: "value",
                editable: false,
                width: 190,
                name: "groupBy",
                value: "all",
                store: Ext.create("Ext.data.Store", {
                    fields: ["name", "value"],
                    data: [{
                            "name": "Show : All Packs",
                            "pickerName": "All Packs",
                            "value": "all"
                        }, {
                            "name": "Show: Ongoing",
                            "pickerName": "Ongoing",
                            "value": "ongoing"
                        }, {
                            "name": "Show: Completed",
                            "pickerName": "Completed",
                            "value": "completed"
                        }
                    ]
                }),
}

Скажем, я выбираю "завершено", я хочу, чтобы он снова загружался "завершено", как только я вернусь туда, где находится этот фильтр ComboBox. Мы будем очень признательны за любую помощь!

Источник
Muzaffer Galata
9 августа 2021 в 10:21
0

Возможно, это то, что вы хотите: coderhelper.com/a/26495269/1068246

FrangosChickenSauce
10 августа 2021 в 02:21
0

Извините, нет, я не после этого, так как я пытаюсь использовать ComboBox, а они, похоже, используют что-то еще.

Ответы (1)

avatar
Muzaffer Galata
10 августа 2021 в 07:42
2

Для этого вы можете использовать cookie:

Ext.onReady(function () {
    var nextMonth = new Date();
    nextMonth.setMonth(nextMonth.getMonth() + 1);
    var _myCookie = Ext.util.Cookies.get('ComboLastSelected');

    var states = Ext.create('Ext.data.Store', {
        fields: ['abbr', 'name'],
        data: [{
                "abbr": "AL",
                "name": "Alabama"
            }, {
                "abbr": "AK",
                "name": "Alaska"
            }, {
                "abbr": "AZ",
                "name": "Arizona"
            }
        ]
    });

    var combo = Ext.create('Ext.field.ComboBox', {
        fieldLabel: 'Choose State',
        width: 200,
        store: states,
        queryMode: 'local',
        queryDelay: 100,
        displayField: 'name',
        valueField: 'abbr',
        minChars: 2,
        value: _myCookie ? _myCookie : '',
        forceSelection: true,
        renderTo: Ext.getBody(),
        matchFieldWidth: false
    });

    combo.on('select', function () {
        Ext.util.Cookies.set('ComboLastSelected', this.getValue(), nextMonth);
    });

});

https://fiddle.sencha.com/fiddle/3f2i

FrangosChickenSauce
11 августа 2021 в 03:34
0

Идеальный мужчина, как раз то, что мне было нужно. Проголосовал и ответил!