在TextField上使用setValue的正确方法是什么?

问题描述:

我有什么似乎是一个简单的问题,但我很难在这一点上。我正在研究一些基于Ext.JS的UI代码,我想改变表单字段中的某些文本的值。在TextField上使用setValue的正确方法是什么?

该字段是一个ext.js.TextField。

我有这样的代码:

var foo = this.getForm().findField('myFooField'); 
console.log(foo); 
foo.setValue("text different that is different from the default"); 

如果我运行此代码,“富”肯定是越来越记录到控制台,它的填充与我期望的值的正确的对象。但是,对setValue的调用似乎没有任何作用。

我已经在setValue之前和之后放了一些跟踪调用,以确保它确实运行,并且一切都似乎没有问题发生。只是UI并没有反映我的变化。我也尝试过调用“setRawValue”,但没有区别。

有什么建议吗?非常感激!

+0

setValue()应该可以正常工作。尝试将该字段引用为Ext组件,以查看它是否有所作为,即 var foo = Ext.getCmp('myFooField'); – legendofawesomeness 2011-12-17 00:05:45

您的代码看起来正确,但是我通常使用这样的函数

Ext.override(Ext.Container, { 
setValue: function(c, v) {this.findById(c).setValue(v);}, 
getValue: function(c) {return this.findById(c).getValue();} 
}); 
win.setValue('myFooField', 'Some text'); 

我不知道为什么你的代码不能正常工作。检查下面的代码是否有效。

Ext.getCmp('myFooField').setValue("text different that is different from the default"); 

即使这不起作用,那么可能是你的代码在错误的地方。

如果您使用的是MVC,您可能正尝试更改窗口渲染事件的值,对于文本字段,设置值仅适用于afterRender事件。