如何在 Sencha 中有条件地隐藏加载按钮图标

问题描述 投票:0回答:0

我对 Sencha 没有太多经验,但我必须在网格显示中制作一个按钮图标(“警报”,没有处理程序)或有条件地隐藏每一行,具体取决于我从商店中的 API。我试过使用“bind:”和“listeners”,但我做不到。 我可以用处理程序等隐藏它,但我希望它在页面加载时有条件地隐藏或显示。这是作为一个值设置为低的警告。我试图将它绑定到控制器中的一个函数,但我无法启动它。

这是我的网格:

 requires: [
    'Ext.grid.column.Action'
],

bind: {
    store: '{BackgroundJobsMonitoringStore}'
},

plugins: 'gridfilters',
stateful: true,
stateId: 'stateGrid',
headerBorders: false,

actions: {
    run: {
        iconCls: 'u4f-backgroundjobs-start-icon',
        tooltip: U4.Titles.getTitle(20637, 'Run'),
        handler: 'onRunClick',
        isActionDisabled: 'isRunDisabled'
    },
    // pause: {
    //     iconCls: 'u4f-backgroundjobs-pause-icon',
    //     tooltip: U4.Titles.getTitle(60600, 'Hold'),
    //     handler: 'onPauseClick'
    // },
    kill: {
        iconCls: 'u4f-backgroundjobs-kill-icon',
        tooltip: U4.Titles.getTitle(39340, 'Terminate'),
        handler: 'onKillClick',
        isActionDisabled: 'isKillDisabled'
    },
    alert: {
        iconCls: 'u4f-backgroundjobs-kill-icon',
        tooltip: U4.Titles.getTitle(-1, 'Attention: Full log enabled!'),
        reference: 'alertButton',
},

columns: [
    {
        text: U4.Titles.getTitle(44499, 'Job ID'),
        flex: 4,
        sortable: true,
        dataIndex: 'jobId',
        draggable: false,
        resizable: false
    },
    {
        text: U4.Titles.getTitle(60247, 'Last update') + ' (UTC)',
        flex: 4,
        sortable: true,
        dataIndex: 'updatedAt',
        draggable: false,
        resizable: false,
        xtype:'datecolumn', 
        format:'Y-m-d H:i:s'
    },
    {
        text: U4.Titles.getTitle(338731, 'Status'),
        xtype: 'u4f_bjstatusbadge',
        flex: 2,
        sortable: true,
        dataIndex: 'status',
        filter: {
            type: 'string'
        },
        draggable: false,
        resizable: false,
        align: 'center'
    }, 
    {
        text: U4.Titles.getTitle(47035, 'Actions'),
        menuDisabled: true,
        sortable: false,
        xtype: 'actioncolumn',
        flex: 2,
        // items: ['@run', '@pause', '@kill'],
        items: ['@alert','@run', '@kill'],
        draggable: false,
        resizable: false,
        align: 'center'
    }
],

listeners: {
    cellclick: 'openLoggingWindow',
    afterrender: 'onAfterRender',
}

});

这是我的函数示例,用于获取我想要使用的值:

isLow: function (grid, rowIndex) {
    var me = this,
        gridStore = grid.getStore(),
        storedTask = gridStore.getAt(rowIndex),
        jobId = storedTask.get('jobId');


    gridStore.sendConfigTaskRequest(jobId)
        .then(function (response) {
            var data = Ext.decode(response.responseText);
            return data.LogLevel !== "Low";
            
        })
        .otherwise(function () {
            me.manageError(action, jobId);
        });
},

我如何在控制器和/或网格中实现它? 提前谢谢你。

javascript button extjs
© www.soinside.com 2019 - 2024. All rights reserved.