2016-04-26 3 views
0

Добрый день. Я разрабатываю веб-приложение, и я хочу проверить, загрязнен ли мой полевой набор. Первое, что я попытался, было fieldSet.isDirty();, но вскоре я встретился с ошибкой, так как функция isDirty() не может быть применена к fieldSet xType. Желая по-прежнему использовать элегантное решение, я тогда написал переопределение для fieldSet. Мое переопределение выглядит так:ExtJS - переопределить FieldSet xType и добавить функцию, похоже, не работает?

Ext.define('myApp.override.form.FieldSet', { 
override: 'Ext.form.FieldSet', 

sampleOverride: function(){ 
    console.log("hi! sample override function entered"); 
}, 

checkForDirtyFields: function(){ 
    me = this; 
    return this.getFields().findBy(function(f){ 
     return f.isDirty(); 
    }); 
} 

});

Как вы можете видеть, я написал две функции, одну в качестве примера, а другую для проверки грязных полей внутри поля. При попытке использовать его в мой контроллер, как:

fieldSet.checkForDirtyFields(); 
fieldSet.sampleOverride(); 

Я поздоровался ошибкой: Uncaught TypeError: fieldSet.sampleOverride is not a function

теперь я законно запутаться. Я написал переопределения для Panel XType, и я могу использовать их по назначению (для очистки грязного состояния, для очистки полей внутри формы и т. Д.). Однако кажется, что я не могу сделать функцию переопределения для набора полей.

Любое руководство и помощь будут очень благодарны. Спасибо.

+0

Нет причин, по которым не должно работать. Составьте тестовый пример. –

+0

Я нашел работу вокруг. Я скоро отправлю свой ответ. – Razgriz

ответ

0

Извините за неутешительное. Я нашел работу. Моя проблема заключалась в том, что у меня было более одного хранилища, данные которого показаны в форме, разделенной с помощью полей. Проблема заключается в сохранении данных на странице и использовании isDirty(), чтобы проверить, должны ли быть сделаны какие-либо изменения. Проверка на form.isDirty() вернет true, даже если полеСистема для одного магазина была изменена.

Я сделал то, что после form.updateRecord(record); я проверил с record.isModified();, чтобы увидеть, есть ли какие-либо изменения, которые необходимо совершить. Если он возвращает true, я продолжаю синхронизацию своего магазина. Если он возвращает false, запись не была изменена, и я продолжаю использовать свой код.

Теперь, если вам действительно нужен вызов функции, я предлагаю создать контроллер, который принимает поле fieldSet/fieldContainer, просматривать элементы и проверять элементы, если какой-либо из них возвращает false, если флажок установлен с грязным.

Смежные вопросы