2015-12-11 22 views
6

フォームに3つの入力フィールドがあり、最初の2つの入力に値がある場合にのみ3番目の入力を有効にしたいとします。ExtJSのバインド式で論理演算子を使用するにはどうすればよいですか?

これは動作していないよう:ビューモデルで

Ext.define('MyApp.view.myobj.MyPanel', { 
    extend:'Ext.Panel', 

    viewModel: {}, 

    items: [{ 
     xtype: 'form', 
     defaultType: 'textfield', 
     items: [ 
      {fieldLabel: 'Field 1', reference: 'field1', publishes: 'value'}, 
      {fieldLabel: 'Field 2', reference: 'field2', publishes: 'value'}, 
      { 
       fieldLabel: 'Field 3', 
       bind: { 
        disabled: '{!field1.value} || {!field2.value}' 
       } 
      },    
     ], 
    }], 
}); 

Fiddle

答えて

6

、{field1.value!}の値を返すように数式を追加する|| {!field1.value}フィドルを1として

viewModel: { 
    formulas: { 
     something: { 
      bind: { 
       x: '{!field1.value}', 
       y: '{!field2.value}' 
      }, 

      get: function (data) { 
       if (data.x || data.y) return true; 
       else return false; 
      } 
     } 
    } 
}, 

items: [{ 
    xtype: 'form', 
    defaultType: 'textfield', 
    bodyPadding: 10, 
    items: [ 
     {fieldLabel: 'Field 1', reference: 'field1', publishes: 'value'}, 
     {fieldLabel: 'Field 2', reference: 'field2', publishes: 'value'}, 
     { 
      fieldLabel: 'Field 3', 
      bind: { 
       disabled: "{something}" 
      } 
     },    
    ], 

}] 
+1

まあjavascriptのは、ちょうどにこれを解決するだろう'{!field1.value}'はextjに到達する前でもあります。 – serg

+0

私の悪い、あなたが正しいです。 Hm。もう1つの選択肢は、フィールド1とフィールド2に変更リスナーを追加し、両方の値をチェックし、それに応じて有効/無効にすることです。 – Jaimee

+0

それは私が現在やっていることです、私はそれを行う単純な "バインド"の方法があるかと思います。 – serg

関連する問題