Как сделать кондиционирование шаблона в Ext JS с текущим значением? - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть этот объект (который является выпадающим списком с хранилищем массивов):

        Ext.create('Ext.data.Store', {
            storeId: 'votationStore',
            fields:[ 'id', 'eligible_for_voting'],
            data: [
                { id: 1, eligible_for_voting: true },
                { id: 2, eligible_for_voting: false },
                { id: 3, eligible_for_voting: false },
                { id: 4, eligible_for_voting: false }
            ]
        });

        Ext.create('Ext.grid.Panel', {
            title: 'Grid',
            store: Ext.data.StoreManager.lookup('votationStore'),
            columns: [
                { text: 'Number', dataIndex: 'id' },
                {
                    text: 'Can be voted?',
                    renderer: function(value, metaData, record, rowIndex, colIndex, store, view) {
                                return value?'Yes':'No';
                    },
                    dataIndex: 'eligible_for_voting',
                    flex: 1,
                    editor: {
                        xtype: 'combobox',
                        displayField: 'id',
                        displayTpl: [
                            '<tpl for=".">',
                            '    <tpl if="values">',
                            '        Yes',
                            '        <tpl else>',
                            '            No',
                            '        </tpl>',
                            '    </tpl>'
                        ],
                        store: [
                            true,
                            false
                        ],
                        valueField: 'id'
                    }
                }
            ],
            plugins: [
                        {
                            ptype: 'cellediting',
                            clicksToEdit: 1
                        }
            ],
            height: 200,
            width: 400,
            renderTo: Ext.getBody()
        });

Как вы можете видеть выше, я пытаюсь получить прямой доступ к значению, выбранному в магазине, несмотря на ключref.

Код шаблона:

   <tpl for=".">
        <tpl if="values">
           Yes
        <tpl else>
           No
        </tpl>
    </tpl>

Обычно я знаю, если у вас есть структурированный объект, который вы можете использовать, если = {name_object}

Но что если выхотите получить доступ к объекту напрямую и к хранилищу как к простому массиву без ключей?

Дополнительная информация: также я использую Sencha Architect с версией 6.60.

https://fiddle.sencha.com/#view/editor&fiddle/2vk1

Интеграция: Я пытаюсь добиться того, чтобы изменить отображаемый текст в соответствии с тем, что я выбрал в выпадающем списке, используя шаблон displayTpl.

Из того, что я прочитал в документации,использование <tpl for="."> позволяет мне получить прямой доступ к значению контекста и создать указатель в шаблоне.С <tpl if="values"> я пытаюсь получить доступ к value через for = "."и получить к нему доступ, просто чтобы убедиться, что это правда или ложь.

Я хотел сделать это без определения полей или доступа к ним по привязке, но напрямую без какой-либо ссылки, такой как {votation.id} или чего-то подобного, на случай, если яопределили верхний объект.

Возможно ли это?

1 Ответ

1 голос
/ 26 сентября 2019

Не знаю, правильно ли я вас понял.Вы хотите отобразить Yes, когда значение равно true, и No, если значение равно false?

Проверьте скрипку https://fiddle.sencha.com/#view/editor&fiddle/2vnl

...