2

我正在使用 Extjs 4 并使用 Designer 1.2.0 我正面临我用来显示工具提示的网格渲染器功能的问题。网格放置在选项卡面板中。当我第一次打开选项卡面板时一切正常,但是当我关闭选项卡面板并重新打开它时,initComponent() 不会再次被调用,因此工具提示不会显示并且超链接效果会消失。有什么办法可以解决这个问题?下面是我的代码:

Ext.define('MyApp.view.ItemManager', {
    extend: 'MyApp.view.ui.ItemManager',

    initComponent: function() {
       Ext.QuickTips.init();
         var me = this;
         me.callParent(arguments);
              me.down('#itemManager').columns[3].renderer=function(value,metaData,record,colIndex,store,view){
                var imgpath="<img style=\'margin: 2px 0;height:150px;width:150px;\' src=\' /items/"+record.data.id +" '/>";

                metaData.tdAttr = 'data-qtip=" '+imgpath +'"' ;
                return '<a href="/items/imgdownload?id='+record.data.id+'">'+ record.data.img_filename +'</a>';
              }
      }
});

但是,当我在通过从设计器导出项目生成的ui文件中编写渲染器代码时,一切正常。问题是如果我在ui文件中编写渲染器,每次导出项目时它都会被覆盖:(

4

1 回答 1

1
  1. Ext.QuickTips.init()应该只调用 1 次,并且需要重新定位到全球位置。
  2. 您需要将呈现的定义重新定位到它所属的实际列:{ ..., dataIndex : 'myColumn', rendered : function (value, metaData, etc) { return value; }, title : 'My Column Title', ... }

编辑

下面是一个例子:

Ext.define('MyApp.view.ItemManager', {
    extend: 'MyApp.view.ui.ItemManager',

    initComponent: function() {
        //Ext.QuickTips.init(); // move to global js file. only call once.
        var me = this;
        me.callParent(arguments);

        if (!me.down('#itemManager').columns[3].renderer) {
            me.down('#itemManager').columns[3].renderer=function(value,metaData,record,colIndex,store,view) {
                var imgpath="<img style=\'margin: 2px 0;height:150px;width:150px;\' src=\' /items/"+record.data.id +" '/>";

                metaData.tdAttr = 'data-qtip=" '+imgpath +'"' ;
                return '<a href="/items/imgdownload?id='+record.data.id+'">'+ record.data.img_filename +'</a>';
            }
        }
    }
});
于 2011-09-28T06:29:15.527 回答