2017-09-22 4 views
0

Ext Jsのすべてのバインディングと設定に慣れていません。だから私は電子メール(mailto)ボタン付きのテキストフィールドを持っています。ボタンを有効または無効にしたいのみ。しかし、私はトリガ自体を処理することから始める方法を知らない。だから私はそうのように私のViewControllerに結合するのをやってみました:テキストフィールドからトリガーを無効/有効にする

txtContactEmail:{ 
    disabled: {someFunctionInViewModel} 
}//this disables/enables the whole control 
//I only want the trigger button to be disabled/enabled 

これは、煎茶の建築家で作成したビュー内のコードです。

{ 
    xtype: 'textfield', 
    flex: 2, 
    itemId: 'txtContactEmail', 
    margin: '0 5 0 0', 
    fieldLabel: 'Email', 
    labelWidth: 35, 
    validateOnChange: false, 
    validateOnBlur: false, 
    triggers: { 
      trgEntityEmail: { 
       cls: 'x-form-email-trigger' 
      } 
    } 
} 
+0

のようなディスエーブル状態をエミュレートすることができると思いますか? –

+0

フォーム>タブパネル>コンテナ>テキストフィールド –

+0

** [formBind](https://docs.sencha.com/extjs/6.5.1/classic/Ext.button.Button.html#cfg- formBind)**それがあなたを助けてくれることを願っています。 –

答えて

1

トリガーにバインドするだけで、このインラインコードが役立ちます。これは、テキストフィールドのhideTrigger設定をView Modelプロパティにバインドします。このFiddleには作業コードがあります。

Ext.create('Ext.form.field.Text', { 
     viewModel: { 
      data: { 
       x: false 
      } 
     }, 
     flex: 2, 
     itemId: 'txtContactEmail', 
     margin: '0 5 0 0', 
     fieldLabel: 'Email', 
     labelWidth: 35, 
     validateOnChange: false, 
     validateOnBlur: false, 
     //Bind to x property of View Model 
     bind: { 
      hideTrigger: '{!x}' 
     }, 
     triggers: { 
       trgEntityEmail: { 
        cls: 'x-form-email-trigger' 
       } 
     } 
    }); 

もう一つの方法は、例えば、テキストフィールドのいくつかの他の設定にhideTrigger設定をバインドすることができます。値。このインラインコードは、このアプローチを示しています。あなたはhere.

Ext.create('Ext.form.field.Text', { 
       viewModel:{}, 
       flex: 2, 
       itemId: 'txtContactEmail', 
       margin: '0 5 0 0', 
       fieldLabel: 'Email', 
       labelWidth: 35, 
       validateOnChange: false, 
       validateOnBlur: false, 
       //Set a reference on textfield and publish its value 
       // Use this reference to do the binding 
       value: 'Some Value', 
       reference: 'mytextfield', 
       publishes: ['value'], 
       bind: { 
        hideTrigger: '{mytextfield.value}' 
       }, 
       triggers: { 
        trgEntityEmail: { 
         cls: 'x-form-email-trigger' 
        } 
       } 
      }); 
+0

"ボタンを有効または無効にしたい" - ボタン自体を無効にするには、 'hideTrigger'プロパティではなく' disabled:{!x} 'をバインドする必要があります。 – NAmorim

1

Ext.field.trigger.Triggerは、箱から出して有効/無効にするカントそれを確認することができます。

は、私はあなたがplsは私があなたのボタンは、フォームの内側にある知らせることができ、この

var myTrigger = myTextField.getTriggers()['trgEntityEmail']; 
// Apply disabled style with .setCls() or .setIconCls() 
myTrigger.setIconCls('my-disabled-icon'); 
// Remove handler 
myTrigger.sethandler(Ext.emptyFn); 
+0

リンクのためにありがとう。しかし、私はextraCls = "x-item-disabled"を使ってボタンを無効にしました –

関連する問題