2016-07-07 3 views
-1
значение

как установить isDirty() динамически в Ext JsКак установить значение isDirty() динамически в Ext Js

У меня есть форма, которая содержит панель управления TextBox, радио-кнопки и кнопку сохранения. В функции afterrender я устанавливаю значение в текстовое поле. после загрузки страницы isDirty() возвращает true, но мое требование - когда я нажимаю кнопку обновления, он должен возвращать true.

как я могу это достичь.

Я пробовал с trackResetOnLoad = true, но не работал.

Fiddle пример https://fiddle.sencha.com/#fiddle/1d74

Update: - мне нужно отслеживать Изменение или обновление после функции Afterrender.

+0

Нет переключателя. Также, почему вы указали isDirty button. Если я не ошибаюсь, то здесь вам нужно только обновить кнопку. – UDID

+0

Его просто образец программы. isDirty кнопка будет просто предупреждать isDirty() значение. – CharanRoot

ответ

0

Вы можете достичь того же функциональность, давая значение, конфигурации к TextField, а не устанавливать что-либо в afterrender. Когда вы запустите приведенный ниже код, вы не получите значение в isDirty кнопка при первом нажатии.

Ext.onReady(function() { 

    var form = new Ext.form.Panel({ 
     itemId:'panelFormID', 
     trackResetOnLoad: true, 
     renderTo: Ext.getBody(), 
     items: [{ 
      xtype: 'textfield' 
      ,name: 'username' 
      ,itemId : 'username' 
      ,fieldLabel: 'username' 
      , value:'stackoverflow' 
     },{ 
      xtype: 'textfield' 
      ,name: 'password' 
      ,itemId : 'password' 
      ,fieldLabel: 'password' 

     }, { 
      xtype: 'button', 
      text : 'isDirty' ,handler: function() { 
       alert(Ext.ComponentQuery.query('#panelFormID')[0].isDirty()); 
      }}, 
      { 
      xtype: 'button', 
      text : 'Update' , 
      handler: function() { 
       Ext.ComponentQuery.query('#username')[0].setValue ('resetvalue'); 
     Ext.ComponentQuery.query('#password')[0].setValue ('restpassword'); 
      } 
     }] 


    } 
    }) 

;

});

+0

Спасибо @Sallo за ваш ответ. В After render function я получаю значение от DB и задает значение TextBox. Мне нужна функция SetValue. – CharanRoot

0

Для этой цели можно использовать метод setValues ​​компонента формы. Это не могло изменить ваш грязный статус, пока свойство trackResetOnLoad вашей формы истинно.

В вашем случае вы можете сделать это так;

Ext.ComponentQuery.query('#panelFormID')[0].up('form').getForm().setValues({ 
       username : 'reset value', 
       password : 'resetpassword' 
      }); 

Эти свойства объекта, связанные с свойством имени вашего компонента. Когда вы пропустите какое-то значение поля, оно будет пустым. поэтому вы должны получить всю свою ценность и изменить свои пожелания и снова установить.

0

Используйте следующий код в ваш afterrender слушателю:

var items = Ext.ComponentQuery.query('#panelFormID') [0].getForm().getFields().items, 
    i = 0, 
    len = items.length; 
for(; i < len; i++) { 
var c = items[i]; 
if(c.mixins && c.mixins.field && typeof c.mixins.field['initValue'] == 'function') { 
    c.mixins.field.initValue.apply(c); 
    c.wasDirty = false; 
} 
} 
0

isDirty() зависит от originalValue соответствующего component.In afterrender, как вы установите значение поля, необходимо также установить originalValue field.I добавили эту строку в afterrender код:

 afterrender :function() { 
     Ext.ComponentQuery.query('#username')[0].setValue ('stackoverflow'); 
     //new line 
     Ext.ComponentQuery.query('#username')[0].originalValue='stackoverflow' 

     Ext.ComponentQuery.query('#panelFormID')[0].trackResetOnLoad = true; 
    } 
0

Пожалуйста, попробуйте использовать это после установки значений (в afterrender функции):

Ext.ComponentQuery.query('#panelFormID')[0].form.setValues(Ext.ComponentQuery.query('#panelFormID')[0].form.getValues()) 
Смежные вопросы