2011-12-16 15 views
3

私は単純な質問であるように見えますが、私はこの時点でかなり困惑しています。いくつかの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"); 

、「foo」が間違いなくコンソールにログインして取得され、そしてそれは私が期待する値が移入正しいオブジェクトですが。しかし、setValueの呼び出しは何もしないようです。

setValueの前後にいくつかのトレース呼び出しを入れて、本当に実行されていることを確認してください。すべてが問題なく起きているようです。 UIが私の変更を反映していないことだけです。私は "setRawValue"と呼んでみましたが、違いはありません。

提案がありますか?とても有難い!あなたのコードが右に見える

+0

setValue()は正常に動作するはずです。 Extコンポーネントとしてフィールドへの参照を取得して、差があるかどうかを確認してください。つまり、 var foo = Ext.getCmp( 'myFooField'); – legendofawesomeness

+0

最初の行に 'this'とは何ですか?あなたのコードを再現しようとしていて、 '.getForm()'が未定義になっています。 –

+0

フォームの完全なコードを共有できますか?問題は、setValue()の反映が瞬間的で、値がテキストボックスにすぐに取り込まれるため、作成されたコードに関連するようです。また、何かエラーがスローされますか? – netemp

答えて

1

は、しかし、私は通常、私はあなたのコードが動作しない理由はわからないこの

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'); 
1

のような関数を使用します。以下のコードが動作するかどうか確認してください。

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

これが機能しない場合でも、間違った場所にコードがある可能性があります。

2

MVCを使用している場合、おそらくウィンドウのレンダリングイベントの値を変更しようとしています。テキストフィールドの場合、設定値はafterRenderイベントでのみ機能します。

関連する問題