Extjs并没有提供直接的组件来显示图片。网上通过设置textfield的InputType为Image然后再修改dom对象来实现,其实image的属性值并没有包含在Extjs的官方文档当中。可以通过以下的思路实现,更可以进一步扩展成自定义组件。推荐的方法如下:
1、首先做一个容器
- {
- xtype: 'box', //或者xtype: 'component',
- width: 100, //图片宽度
- height: 200, //图片高度
- autoEl: {
- tag: 'img', //指定为img标签
- src: 'myphoto.gif' //指定url路径
- }
- }
这样就在panel或者其他的容器里面显示图片了
2、图片的动态更新
- //动态更新只需要获取到刚才建立的box的dom的src
- myphoto.getEl().dom.src = newSrc
这样就实现了显示与动态更新
方案二:
使用以下扩展便可:
- Ext.form.Myimg = Ext.extend(Ext.BoxComponent, {
- onRender : function(ct, position){
- if(!this.el){
- this.el = document.createElement('img');
- this.el.src = this.src;
- if(this.forId){
- this.el.setAttribute('htmlFor', this.forId);
- }
- }
- Ext.form.Label.superclass.onRender.call(this, ct, position);
- }
- });
- Ext.reg('myimg', Ext.form.Myimg);
使用:
- new Ext.form.Myimg
- ({
- width : 120,
- height : 100,
- src:'uu.bmp'
- }).render(Ext.getBody());
- //or
- {
- xtype : 'myimg',
- width : 120,
- height : 100,
- src:'uu.bmp'
- }
方案三:
xtype:'textfield',fieldLabel:'图片',
width:130,height:114,style:'background-image:url(./1.jpg);background-repeat: no-repeat;',readOnly:true