2012-07-23 77 views
0

我正在尝试创建一个Sencha Touch 2窗体面板,其中一个字段包含URL到图像文件。如果我包含文本框,它会正确显示网址的文本,但我真正想要的是以显示在该网址处找到的图像,我不知道该怎么做。如果我使用xtype: image,我认为我需要一个src config,我不确定如何指定所需的值在一个表单域中。我的观点如下所示:图像窗体字段Sencha Touch 2

Ext.define("CatalogApp.view.ItemDetailView", { 
    extend: "Ext.form.Panel", 
    requires: "Ext.form.FieldSet", 
    alias: "widget.itemdetailview", 
    config:{ 
     scrollable:'vertical' 
    }, 
    initialize: function() 
    { 

     this.callParent(arguments); 

     var backButton = { 
     xtype: "button", 
     ui: "back", 
     text: "Home", 
     handler: this.onBackButtonTap, 
     scope: this 
     }; 

     var topToolbar = { 
     xtype: "toolbar", 
     docked: "top", 
     title: "Item Detail", 
     items: [ 
      backButton 
     ] 
     }; 

     var mainLayout = { 
     xtype: "container", 
     layout: 'hbox', 
     items: [ 
      { 
       xtype: 'textfield', 
       width: 200, 
       name: 'thumbUrl' 
      }, 
      { 
       xtype: "fieldset", 
       flex: 1, 
       items : [ 
        { 
        xtype: 'textfield', 
        name: 'itemNbr', 
        label: 'Item Nbr', 
        disabled: true 
        }, 
        { 
        xtype: 'textfield', 
        name: 'itemDesc', 
        label: 'Item Desc', 
        disabled: true 
        } 
       ] 
      } 
     ] 
     }; 

     this.add([ 
     topToolbar, 
     mainLayout 
     ]); 
    }, 

    onBackButtonTap: function() 
    { 
     console.log("backToHomeCommand"); 
     this.fireEvent("backToHomeCommand", this); 
    } 

}); 

如何设置此视图以正确显示图像?

回答

2

你必须定义新的煎茶组件:ImageField的

Ext.define('Ext.ux.field.ImageField', { 
extend: 'Ext.field.Field', 
requires: [ 
    'Ext.Img' 
], 
xtype: 'imagefield', 
config: { 
    component: { 
     xtype: 'image' 
    } 
}, 

updateValue: function(value, oldValue) { 
    var me = this, 
     component = me.getComponent(); 

    component.setSrc(value); 
}, 

proxyConfig: { 
    width: '100%', 
    height: '100%' 
} 

}); 

比形式:

Ext.define("CatalogApp.view.ItemDetailView", { 
extend: "Ext.form.Panel", 
requires: "Ext.form.FieldSet", 
alias: "widget.itemdetailview", 
config:{ 
    scrollable:'vertical' 
}, 
initialize: function() 
{ 

    this.callParent(arguments); 

    var backButton = { 
    xtype: "button", 
    ui: "back", 
    text: "Home", 
    handler: this.onBackButtonTap, 
    scope: this 
    }; 

    var topToolbar = { 
    xtype: "toolbar", 
    docked: "top", 
    title: "Item Detail", 
    items: [ 
     backButton 
    ] 
    }; 

    var mainLayout = { 
    xtype: "container", 
    layout: 'hbox', 
    items: [ 
     { 
      xtype: 'imagefield', // only this change 
      width: 200,   
      height: 150, 
      name: 'thumbUrl' 
     }, 
     { 
      xtype: "fieldset", 
      flex: 1, 
      items : [ 
       { 
       xtype: 'textfield', 
       name: 'itemNbr', 
       label: 'Item Nbr', 
       disabled: true 
       }, 
       { 
       xtype: 'textfield', 
       name: 'itemDesc', 
       label: 'Item Desc', 
       disabled: true 
       } 
      ] 
     } 
    ] 
    }; 

    this.add([ 
    topToolbar, 
    mainLayout 
    ]); 
}, 

onBackButtonTap: function() 
{ 
    console.log("backToHomeCommand"); 
    this.fireEvent("backToHomeCommand", this); 
} 

}); 

干杯,奥列格

+0

感谢奥列格,似乎这样的伎俩非常漂亮。然而,我有一个后续问题:是否有一种简单的方法来增强此自定义字段,以便将图像呈现为指向其URL位于表单另一个字段中的文档的超链接? – tkannenb 2012-07-24 13:57:58

+0

亲爱的,这是另一个问题。将这个问题标记为已回答,提出新问题,然后我会告诉你如何做一个:) – olegtaranenko 2012-07-25 09:32:36