iteye_9116
2010-10-27 11:54 阅读 783

XTemplate 事件问题

[b]我想要在XTtemplate中添加一个链接的单击事件,当点击链接在同一页面的另一个Panel中显示数据并重新加载,请问怎么做呀?[/b]
[color=blue]XTtemplate中自带的事件不行,因为它在进入页面时就加载了,我要点击之后才加载。[/color]
下面的我的[b]ExtJS代码[/b]:
createFlowConsole : function() {
var data = ['actionId','name'];
this.store = new Ext.data.JsonStore({
url: _ctx.base + '/osworkeflow/getAvailableActions.action',
root:'action',
fields: data
});

    var xtpl = new Ext.XTemplate(
        '<tpl for=".">',
            '<tpl if="xindex % 2 == 1">',
                '<div class="x-grid3-cell-inner" style="font-size:10px; background-color:#FFFFFF; border-bottom:1px solid #EDEDED"">',
                '<span class="" style=" padding-left:30px;"><a id="showMySteps" href="javaScript: onclick={[this.test()]}">{name}</a></span></div>',
            '</tpl>',
            '<tpl if="xindex % 2 == 0">',
                '<div class="x-grid3-cell-inner" style="font-size:10px; background-color:#FAFAFA; border-bottom:1px solid #EDEDED"">',
                '<span class="" style=" padding-left:30px;"><a href="#">{name}</a></span></div>',
            '</tpl>',
        '</tpl>',{
            test : function(){
                alert("ok");
            }
        }
    );  

    this.availableActionsPanel = new Ext.Panel( {
        id : 'mySteps_panel',
        region : 'north',
        title : '我的步骤',
        margins : '0 0 5 0',
        height : 150,
        items: new Ext.DataView({
            store: this.store,
            tpl: xtpl,
            autoHeight:true,
            multiSelect: true,
            overClass:'x-view-over',
            itemSelector:'div.thumb-wrap',
            emptyText: 'No data to display'
        })
    });

    this.steps = this.createSetpsGrid();

    var flowConsole = new Ext.Panel( {
        region : 'center',
        layout : "border",
        border : false,
        items : [ this.availableActionsPanel, this.steps ],
        margins : '5 5 5 0'
    });
    return flowConsole;
}

详细如下附件图所示 :

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • 已采纳
    lizhiyezi lizhiyezi 2010-10-27 13:44

    我吧测试代码给你瞧吧。应该是你哪里写错了,不然不会出现你说的情况
    [code="java"]
    function test() {
    alert('onclick');
    }
    Ext.onReady(function() {
    this.store = new Ext.data.JsonStore({
    data : [{
    name : 'aaa'
    }],
    fields : ['name']
    });
    // window.test = function() {
    // alert('onclick');
    // }
    var xtpl = new Ext.XTemplate(
    '',
    '',
    '

    ',
    '{name}
    ',
    '',
    '',
    '
    ',
    '{name}
    ',
    '', '');

    this.availableActionsPanel = new Ext.Panel({
                id : 'mySteps_panel',
                region : 'north',
                title : '我的步骤',
                margins : '0 0 5 0',
                height : 150,
                items : new Ext.DataView({
                            store : this.store,
                            tpl : xtpl,
                            autoHeight : true,
                            multiSelect : true,
                            overClass : 'x-view-over',
                            itemSelector : 'div.thumb-wrap',
                            emptyText : 'No data to display'
                        })
            });
    var win = new Ext.Window({
                width : 500,
                height : 200,
                layout : 'fit',
                items : this.availableActionsPanel
            })
    win.show();
    

    })[/code]

    点赞 评论 复制链接分享
  • lizhiyezi lizhiyezi 2010-10-27 13:05

    XTemplate 在解析的时候会对 {[this.test()]} 处理。
    换成这种写法
    [code="java"]{name} [/code]

    window.test = function() {//添加一个test事件函数
    alert('onclick');
    }

    点赞 评论 复制链接分享

相关推荐