Для чего необходима ViewModel в примере
Всем привет.
Нашел интересный пример реализации редактирование записей грида в окне. У меня возникает вопрос: Для чего именно, в этом примере, используется ViewModel: Ext.define('NJDHV10.view.UserFormModel', { extend: 'Ext.app.ViewModel', alias: 'viewmodel.userformvm', data: { userData: null } }); Я понимаю что Ext.window.Window использует эту ViewModel, но почему так реализовано, и возможно ли обойтись без этой ViewModel? Спасибо |
Суть в том, что надо передать значения из экземпляра 'NJDHV10.model.UserModel' в редактор. Если бы там была настоящая форма (Ext.form.Panel) то можно было бы вызвать ее метод loadRecord. Но автор фидла использовал окно, в котором такого метода нет. Значит самым простым решением для передачи данных служит как раз вью модель.
|
Получается что если в Ext.window.Window установить xtype: 'form' с полями, то промежуточная вьюха и не потребуется для загрузки значений записи в окне?
|
Ну не прямо так просто... Вьюмодель обеспечивает двустороннее связывание: вы видете изменения в гриде прямо в процессе редактирования. В случае формы вам надо будет юзать updateRecord чтоб применить изменения. И по большому счету форма нужна там где ее будут сабмитать. Тут такого нет, передать изменения на сервер можно и из стора грида. Надо смотреть на конкретный кейс и уже тогда решать какие компоненты юзать.
Ну а как пример эксплуатации вьюмоделей и двустороннего связывания - очень полезный фидл. |
Infarch - спасибо за разъяснение. Теперь понимаю что меня не туда понесло, мне просто нужен грид и создание/редактирование его записей в окне без какого либо двухстороннего связывания. Сейчас взял Ext.window.Window
а в нем указал: ... items: [{ xtype: 'form', items: [ ... Пока полет нормальный))) А в чем суть двухстороненного связывания? Для чего оно требуется кроме как моментальное отображение изменений. |
В осовном для динамического переключения разных компонентов без тыка в специальные кнопки. Есть хороший официальный пример: https://docs.sencha.com/extjs/6.7.0/...wo_way_binding
А еще - для удовлетворения хотелок заказчиков в энтерпрайзе. Они любят чтоб все шевелилось и подмигивало :) |
Цитата:
И там обычная загрузка записи в форму form.loadRecord(rec); Недавно делал тестовое задание для одной организации. Возможно пригодится https://fiddle.sencha.com/#view/editor&fiddle/2s73 пароль там остался: 123 |
Pavel M - за пример спасибо. Уверен что пригодится
|
Часовой пояс GMT +3, время: 21:51. |