0

我在 extjs4 工作。我有带有链接的gridview=

{
            margin : '10 0 5 100',
            xtype : 'grid',
            id : 'g2',

            store : 'qb.qbquestionoptionStore',
            columns : [ {
                text : 'Options',
                dataIndex : 'option',
                flex : 1
            }, {
                text : 'Answer',
                dataIndex : 'isAnswer',
                flex : 2.5
            },
            {header : 'edit',
                renderer : function(val) {
                    //return '<a href="#" id="edit">Edit</a>';
                    return '<a href="#" onclick=" ">Edit</a>';
                }}}

所以点击上面的链接我想调用控制器的动作。那么如何实现呢?我有我的 app.js 作为-

Ext.application({
requires: ['Ext.container.Viewport'],
name: 'Balaee',
appFolder: 'app',

        controllers: [ 'Balaee.controller.qb.qbquestionController'
                             ],
launch: function() {
        Ext.create('Ext.container.Viewport', 
         {
            //id:'mainId',
            layout: 'auto',
            items: {xtype:'editView'}
        });
    }
});

我试过——“'编辑';” 但它给了我错误,因为“Balaee.app 未定义”。所以我需要做什么

4

1 回答 1

1

如果要控制 DOM 元素的事件,最好在 View 中绑定 DOM 事件,然后 View 应该生成 View 的高级事件来绑定 Controller。

小提琴示例:http: //jsfiddle.net/Virt/8xtAN/

注释:

查看将 DOM 事件绑定到元素并为 Controller 生成事件所需的函数:

    initComponent: function () {
        this.addEvents('editcompany');
        this.callParent(arguments);
    },
    afterRender: function () {
        this.mon(this.el, 'click', this.onEditClick, this, {
            delegate: 'a'
        });

        this.callParent(arguments);
    },
    onEditClick: function (e, t) {
        e.stopEvent();
        var id = Ext.fly(t).getAttribute('dataValue');
        this.fireEvent('editcompany', id, this, e);
    }

绑定到 View 事件的控制器函数:

    init: function () {
        this.control({
            'testgrid': {
                editcompany: function (companyId) {
                    alert('Edit Company ' + companyId);
                }
            }
        });
    }
于 2013-06-24T09:17:42.533 回答