我在extjs代码中有一个属性定义为:
datajson: {
'name' : 'Hello',
....
}
现在我需要将textfield的值设置为此属性中定义的名称。
我尝试过以下但是没有效果:
Ext.getCmp('name').setValue((this.datajson.xyz.name).toString());
我想要设置其值的文本字段的ID是“name”
这是完整的代码结构。
Ext.define('Test', {
extend : 'Ext.Container',
alias : 'widget.myapp',
datajson:{
'xyz' : {
...
"name" : 'Hello',
...
}
},
initComponent : function() {
this.appcombo = Ext.create('Ext.form.field.ComboBox', {
store: Ext.create('Ext.data.Store', {
fields: ['text'],
data: [
{text: "a"},
{text: "b"},
{text: "c"}
]
}),
listeners: {
select: function(combo, record, index) {
Ext.getCmp('name').setValue((this.datajson.xyz.name).toString());
}
}
});
...
...
//Here we have a textfield within a Panel whose id is 'name'
所以基本上我正在加载页面然后在组合框中选择一个值作为事件来加载文本字段中的值和datajson中的数据。
编辑:添加了更多信息。
答案 0 :(得分:1)
您的select函数中的范围不再包含datajson
。要继续使用this.datajson
,您可以使用bind
Ext.application({
name: 'Fiddle',
datajson: {
'name': 'Hello'
},
displayName: function (combo, record, index) {
Ext.getCmp('name').setValue((this.datajson.name));
},
launch: function () {
Ext.create('Ext.form.Panel', {
title: 'Contact Info',
width: 300,
bodyPadding: 10,
renderTo: Ext.getBody(),
items: [{
xtype: 'combo',
store: Ext.create('Ext.data.Store', {
fields: ['text'],
data: [{
text: "a"
}, {
text: "b"
}, {
text: "c"
}]
}),
listeners: {
select: this.displayName.bind(this)
}
}, {
xtype: 'textfield',
id: 'name',
fieldLabel: 'Name'
}]
});
}
});