Есть у меня карточка объекта и в ней есть поле UsrProduct, за которым я слежу.
Если пользователь меняет поле, у меня вызывается обработчик и он пересчитывает значение в другом поле, которое также сохраняется в БД.
Проблема в том, что если пользователь поменял поле, а затем нажал Отмена, система возвращает все поля в исходное состояние, в том числе UsrProduct, а дальше снова вызывается мой обработчик и пересчитывает другое поле. И вот этого последнего пересчета хотелось бы избежать.
Вопрос - как понять, что вызов происходит после нажатия Отмены???
Нравится
попробуйте использовать предоставляемый платформой механизм "зависимости".
attributes:{ ... "UsrProduct": { dependencies: [ { columns: ["UsrProduct"], methodName: "ProductChanged" } ] } ... },
Его реализация предусматривает Ваш и еще несколько кейсов, которые дополнительно придется отрабатывать при прямой подписке на Backbone model property.
Так будет еще хуже. Метод будет вызываться еще и при инициализации страницы.
Нужен какой-то onCancel, есть такой?
Есть onDiscardChangesClick. Который и вызывается при нажатии на Отмена. Можете дополнительно создать атрибут с булевым флагом который будет заполняться в момент вызова onDiscardChangesClick.
"Мотков Илья" написал:Есть onDiscardChangesClick. Который и вызывается при нажатии на Отмена. Можете дополнительно создать атрибут с булевым флагом который будет заполняться в момент вызова onDiscardChangesClick.
Да, так работает!
Спасибо!
"Алексей Карягин" написал:Метод будет вызываться еще и при инициализации страницы.
по какой причине он будет вызываться при ИНИЦИАЛИЗАЦИИ страницы ?
не должен и не вызывается :)
"Алексей Карягин" написал:Нужен какой-то onCancel, есть такой?
есть у BasePageV2 метод onCardAction
... onCardAction: function() { var action = arguments[0] || arguments[3]; this[action](); }, ...
через него проходит обработка вызова "действий карточки", если они не вызываются напрямую н/п
this.save()
он завязан в механике обработки тегов по нажатию на кнопках "Закрыть", "Отмена", "Сохранить".
Я думаю это то что Вам нужно.
PS: через него кстати и вызов вышеупомянутого onDiscardChangesClick происходит