Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.06.2015, 00:12
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Когда в форме датаполе myStore.sync подвисает
По идее этот код всегда должен скрывать сообщение. Иными словами callback должен всегда вызываться.

myStore.sync({
     callback: function() {
           Ext.Msg.hide();
     }
});


Но у меня проблема, когда в форме находится датаполе, то не работает.

Песочница: https://fiddle.sencha.com/#fiddle/o8h

В чем может быть проблема?
Ответить с цитированием
  #2 (permalink)  
Старый 09.06.2015, 06:57
Профессор
Отправить личное сообщение для siber-biber Посмотреть профиль Найти все сообщения от siber-biber
 
Регистрация: 07.08.2013
Сообщений: 214

1) callback не будет работать с memory proxy. Не предполагается там никаких callbacks. Это термин из мира AJAX.
2) вы делаете sync не изменив стор. В форме данные поменялись допустим, но эти изменения надо положить в стор. То есть вначале дулаем loadRecord чтоб показать запись в форме а по завершении надо сделать updateRecord: http://docs.sencha.com/extjs/5.1/5.1...d-updateRecord
3) вы всегда показываете message хотя реального sync может и не произойти если пользователь ничего не поменял в форме. И тогда тоже никаких callback не вызовется. Это надо проверять..

Вот мой форк: https://fiddle.sencha.com/#fiddle/o95
Ответить с цитированием
  #3 (permalink)  
Старый 09.06.2015, 12:56
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Спасибо!
по поводу первого пункта: у меня конечно в реальном проекте не мемори. Но я не знаю что тут сделать, чтобы состряпать быстро пример (увидел теперь как у вас сделано - буду знать)

по поводу третьего пункта - я и не знал, что ничего не будет вызвано в случае если не были внесены изменения в форму - спасибо, сейчас переделаю проект возможно ошибка пропадет!!!

Последний раз редактировалось khusamov, 09.06.2015 в 13:13.
Ответить с цитированием
  #4 (permalink)  
Старый 09.06.2015, 13:08
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

А можно строку

if (myStore.getModifiedRecords().length || myStore.getRemovedRecords().length) {


заменить строкой

if (form.isDirty()) {


вроде как короче?

хотя она не работает почему-то... для чего этот метод isDirty вообще нужен?
Ответить с цитированием
  #5 (permalink)  
Старый 09.06.2015, 13:28
Профессор
Отправить личное сообщение для siber-biber Посмотреть профиль Найти все сообщения от siber-biber
 
Регистрация: 07.08.2013
Сообщений: 214

form.isDirty проверяет только данную форму ..вносились ли зменения. Я сделал проверку есть ли в принципе чтото что не сохранено в сторе. Что использовать из логики приложения решать разработчику.
Ответить с цитированием
  #6 (permalink)  
Старый 09.06.2015, 13:37
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

и почему она не работает тогда???

isDirty выдает все время true https://fiddle.sencha.com/#fiddle/o9m

Последний раз редактировалось khusamov, 09.06.2015 в 13:45.
Ответить с цитированием
  #7 (permalink)  
Старый 09.06.2015, 16:54
Профессор
Отправить личное сообщение для siber-biber Посмотреть профиль Найти все сообщения от siber-biber
 
Регистрация: 07.08.2013
Сообщений: 214

1) идем в описание isDirty: http://docs.sencha.com/extjs/5.1/5.1...method-isDirty
2) читаем, видим что после loadRecord форма либо делается dirty, либо нет в зависимости от конфига trackResetOnLoad: http://docs.sencha.com/extjs/5.1/5.1...ackResetOnLoad
3) меняем форму соответственно:
form = Ext.create('Ext.form.Panel', {
            trackResetOnLoad : true,
            ...

4) профит
Ответить с цитированием
  #8 (permalink)  
Старый 10.06.2015, 15:30
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Ура, все заработало!

Спасибо! Про этот trackResetOnLoad читал, но не понял.

Теперь осталось разобраться с условиями в bind-ах. В другой теме задал вопрос.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск