Байндинг работает асинхронно?
Здравствуйте.
Столкнулся с таким фактом: если я меняю некое свойство вьюшки через вьюмодель и байндинг, то изменения не видны в той же функции. Вот, набросал фидл: https://fiddle.sencha.com/#fiddle/1gkc Общая задача: через модель меняем тайтл и тут же его читаем. Если это делается по кнопке Sync то я получаю старый тайтл. Async работает правильно, но только если defer 5 и выше. Меньшие значения работают как Sync (интересно почему?). Пример примитивный и надуманный. В реальном проекте я через байндинг меняю свойство allowBlank у некоторых инпутов на форме. Дело в том что форму можно сохранить в режиме черновика и тогда не все инпуты обязательны к заполнению. Вот решеил вьюмодель заюзать. Ну а теперь не знаю как правильнее. Вьюмодель + defer, или выбирать нужные инпуты и менять allowBlank каждому по отдельности? Первый вариант привлекательнее. Неужели байндинг действительно асинхронный? |
а почему не получать значения сразу из вью модели?
alert(this.getViewModel().get('title')); |
Потому что вопрос не об этом. Меня интересует как работает механизм связывания на низком уровне, и пример этот просто предельно примитивный образец. В реальной жизни, у меня есть кусок кода который меняет НЕЧТО во вьюмодели и тут же запускает некий функционал в стандартных компонентах. Оный функционал зависит от того что я поменял и я ожидаю результат согласно заданным данным. А этого не происходит. Вот defer c заметной задержкой помогает, да. Но мне это кажется не очень хорошим решением, да и вообще интересно.
|
Часовой пояс GMT +3, время: 18:39. |