单击图标时如何渲染图标和调用功能

时间:2015-02-10 04:19:31

标签: javascript extjs

我想使用渲染器执行锁定/解锁图标按钮。如果单击该按钮,它将显示消息框是/否以确认。如果单击是,则应调用SubmitValue函数。问题是它无法调用javascript SubmitValue 功能。单击是确认框后如何调用功能?

Renderer.js

var renderLock = function (value, p, record) {
    if (JSON.parse(value))
    {
        return '<img src="Images/icon/lock.png" >';
    }
    else 
    {
        return '<img src="Images/icon/unlock.png" >';
    }
}

Common.js

var GetGrid_LockButton = function (Active, FieldId, FieldName, Grid_Name, URL) {
return {
    menuDisabled: true
    , sortable: false
    , hidden: Permit_No_Del
    , text: 'Lock'
    , renderer: renderLock
    , align: 'center'
    , xtype: 'actioncolumn'
    , dataIndex: 'IS_LOCK'
    , width: 45
    , listeners: {
        click: function () {
            Ext.MessageBox.confirm('confirm?', function (btn) {
                if (btn == "yes") {      
                    SubmitValue(URL, { id: rec.get(FieldId) }, "Ext.getCmp('" + Grid_Name + "').getStore().load();", "Yes");
                }
            });

        }
    }
   };
}

提前谢谢。

1 个答案:

答案 0 :(得分:0)

我认为您可能在范围方面遇到问题,请注意将“this”关键字添加为下方确认调用的修改版本中的最后一个参数

Ext.MessageBox.confirm('confirm?', function (btn) {
    if (btn == "yes") {      
        SubmitValue(URL, { id: rec.get(FieldId) }, "Ext.getCmp('" + Grid_Name + "').getStore().load();", "Yes");
    }
},this);

默认情况下,确认调用中的作用域默认为浏览器窗口对象,因此我想在该级别上无法访问SubmitValue函数。