0

テキストフィールドの横にボタンがあるテキストボックスを提供するカスタマイズされたテキストボックスがあります。(コードを実行すると、私が何を意味するかがわかります)。唯一の問題は、無効状態を false に設定すると、次のようなエラーが表示されることです。
Uncaught TypeError: Object [object Object] has no method 'getValue'
ただし、true に設定すると、すべて問題ありません。

これは私のコードです:

    var disabled = false;

    var _oInput = Ext.create("Ext.field.Text", {
        flex: 8,
        labelWidth:0,
        labelAlign: "right",
        value: self.psValue,

    });

    var _oSenchaObject = Ext.create("Ext.field.Text",{
        label: "test",
        disabled: disabled,  //This gives me the error
        component: {
          xtype: 'container', 
          layout: 'hbox', 
          items: [
              _oInput, 
              {
                xtype: 'button', 
                flex: 1, 
                text: '...',
                //disabled: disabled,
              }
          ]
        },
    });

    var formPanelComment = Ext.create('Ext.form.Panel', {
        title:"Comments",
        items: [{
            xtype: 'fieldset',
            title: "Comments",
            items: [
                _oSenchaObject
            ]
        }]
    });
4

1 に答える 1

1

良い質問。:)

これは、「カスタム」textfield(内部ボタンのある通常のテキストフィールドを含む) を定義したときの競合が原因です。

コードスニペットを見てください。エラーが発生する行は次のとおりです。

var _oSenchaObject = Ext.create("Ext.field.Text",{
        ...
        disabled: disabled,  //This gives me the error
        component: {
          ...
        },
    });

ここで、disabledconfig は子コンポーネント ( componentconfig で定義される) に適用されますが、Sencha Touch はテキストフィールドを正しく無効にする方法、内部コンテナ (別のフィールドとボタンを含む) を無効にする方法を知りません。バグやフレームワークの制限のようなものだと思います。

したがって、解決策はdisabled、単一の子のそれぞれに構成を設定するだけです。上記の例では、その行を_oInputの config に移動するだけです。

それが役に立てば幸い。

于 2012-05-31T08:22:28.520 に答える