我想显示从数据存储接收到的数据。我尝试过的一种方法是使用文本字段使其禁用,然后使用存储数据设置其值。但我认为这不是正确的解决方案,所以我尝试使用标签,但我不知道它是如何完成的。你们能指出我正确的做法吗?任何帮助表示赞赏。
谢谢,梅胡尔·马克瓦纳。
我想显示从数据存储接收到的数据。我尝试过的一种方法是使用文本字段使其禁用,然后使用存储数据设置其值。但我认为这不是正确的解决方案,所以我尝试使用标签,但我不知道它是如何完成的。你们能指出我正确的做法吗?任何帮助表示赞赏。
谢谢,梅胡尔·马克瓦纳。
这篇文章有点老了,但我正在研究同一主题并最终使用了不同的方法。
我正在使用 Sencha Touch v2.0。我创建标签并将其放置在 form.Panel 中,就像通常所做的那样。然后我在设计器中配置标签 tpl 以包含模型字段。在将值应用到窗体面板时,我还调用标签 tpl 上的 apply() 方法。以下工作示例说明了这一点。
应用程序.js:
Ext.Loader.setConfig({
enabled: true
});
Ext.application({
views: [
'MyFormPanel'
],
name: 'MyApp',
launch: function() {
Ext.create('MyApp.view.MyFormPanel', {fullscreen: true});
}
});
view.MyFormPanel.js
Ext.define('MyApp.view.MyFormPanel', {
extend: 'Ext.form.Panel',
alias: 'widget.myformpanel',
config: {
items: [
{
xtype: 'label',
itemId: 'myLabel',
tpl: [
'Hello, {firstName} {lastName}, please change your email below:',
''
]
},
{
xtype: 'textfield',
label: 'Email:'
}
],
listeners: [
{
fn: 'onFormpanelInitialize',
event: 'initialize'
}
]
},
onFormpanelInitialize: function(component, options) {
var person = Ext.decode("{firstName: 'John',lastName: 'Dow',email: 'jd@somewhere.com'}");
// apply value to the form
this.setValues(person);
// get the updated text for the label
var label = this.down('#myLabel');
var html = label.getTpl().apply(person);
label.setHtml(html);
}
});
所以想法是将标签模板保存在 label.tpl 字段中,然后使用 Template 的 apply() 方法获取运行时标签值,然后将标签文本设置为它。
我最近尝试通过创建一个“标签”表单组件来解决这个问题。我在Sencha/PhoneGap上写的一篇博客文章中发布了有关它的信息。这是代码:
Ext.form.LabelField = function(config){
Ext.form.LabelField.superclass.constructor.call(this, config);
};
Ext.extend(Ext.form.LabelField, Ext.form.Field, {
isField: true,
value: '',
renderSelectors: {fieldEl: '.x-form-labelfield'},
renderTpl: [
'<tpl if="label">',
'<div class="x-form-label"><span>{label}</span></div>',
'</tpl>',
'<div class="x-form-label x-form-labelfield" style="width:70%; text-align:right"><span>{value}</span></div>',
],
setValue:function(val) {
this.value = val;
if(this.rendered){
this.fieldEl.update('<span>' + val + '</span>');
}
return this;
},
});
Ext.reg('labelfield', Ext.form.LabelField);
让我知道这是否有用。
谢谢你的错误。这正是我想要的。我建议删除x-form-label类并使用以下样式:
.x-form-labelfield {
-webkit-box-flex: 1;
box-flex: 1;
width: 100%;
position: relative;
-webkit-border-radius: 0;
border-radius: 0;
padding: .4em;
border: 0;
min-height: 2.5em;
display: block;
background: white none;
-webkit-appearance: none;
}