从 json 对象中提取字符串
extract string from a json object
我在 extjs 代码中有一个属性定义为:
datajson: {
'name' : 'Hello',
....
}
现在我需要将文本字段的值设置为此属性中定义的名称。
我已经尝试了以下但它不起作用:
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 中的数据加载文本字段中的值。
编辑: 添加了更多信息。
您的 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'
}]
});
}
});
我在 extjs 代码中有一个属性定义为:
datajson: {
'name' : 'Hello',
....
}
现在我需要将文本字段的值设置为此属性中定义的名称。
我已经尝试了以下但它不起作用:
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 中的数据加载文本字段中的值。
编辑: 添加了更多信息。
您的 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'
}]
});
}
});