2015-12-11 33 views
6

Mam 3 pola wejściowe w formularzu i chcę, aby trzecie wejście było aktywne tylko wtedy, gdy pierwsze dwa wejścia mają wartości.Jak używać operatorów logicznych w formułach bind w ExtJS?

nie wydają się działać:

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

Odpowiedz

6

W modelu widoku, należy dodać formułę, aby powrócić do wartości {field1.value!} || {!} Field1.value

Jak na skrzypcach:

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

Dobrze byłoby javascript tylko rozwiązać to pod "{! field1.value}" zanim osiągniesz extjs. – serg

+0

Mój zły, masz rację. Hm. Inną opcją jest dodanie detektora zmian do pól 1 i 2, sprawdzenie obu wartości i włączenie/wyłączenie odpowiednio. – Jaimee

+0

Tak właśnie robię obecnie, zastanawiam się, czy istnieje prosty sposób na "oprawienie" tego. – serg