Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.05.2019, 12:31
Аспирант
Отправить личное сообщение для Ambassador Посмотреть профиль Найти все сообщения от Ambassador
 
Регистрация: 12.11.2015
Сообщений: 68

Для чего необходима ViewModel в примере
Всем привет.
Нашел интересный пример реализации редактирование записей грида в окне.
У меня возникает вопрос: Для чего именно, в этом примере, используется ViewModel:
Ext.define('NJDHV10.view.UserFormModel', {

    extend: 'Ext.app.ViewModel',

    alias: 'viewmodel.userformvm',

    data: {
        userData: null
    }
});


Я понимаю что Ext.window.Window использует эту ViewModel, но почему так реализовано, и возможно ли обойтись без этой ViewModel?
Спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 24.05.2019, 10:14
Аватар для Infarch
Профессор
Отправить личное сообщение для Infarch Посмотреть профиль Найти все сообщения от Infarch
 
Регистрация: 06.06.2014
Сообщений: 290

Суть в том, что надо передать значения из экземпляра 'NJDHV10.model.UserModel' в редактор. Если бы там была настоящая форма (Ext.form.Panel) то можно было бы вызвать ее метод loadRecord. Но автор фидла использовал окно, в котором такого метода нет. Значит самым простым решением для передачи данных служит как раз вью модель.
Ответить с цитированием
  #3 (permalink)  
Старый 28.05.2019, 08:54
Аспирант
Отправить личное сообщение для Ambassador Посмотреть профиль Найти все сообщения от Ambassador
 
Регистрация: 12.11.2015
Сообщений: 68

Получается что если в Ext.window.Window установить xtype: 'form' с полями, то промежуточная вьюха и не потребуется для загрузки значений записи в окне?
Ответить с цитированием
  #4 (permalink)  
Старый 28.05.2019, 12:42
Аватар для Infarch
Профессор
Отправить личное сообщение для Infarch Посмотреть профиль Найти все сообщения от Infarch
 
Регистрация: 06.06.2014
Сообщений: 290

Ну не прямо так просто... Вьюмодель обеспечивает двустороннее связывание: вы видете изменения в гриде прямо в процессе редактирования. В случае формы вам надо будет юзать updateRecord чтоб применить изменения. И по большому счету форма нужна там где ее будут сабмитать. Тут такого нет, передать изменения на сервер можно и из стора грида. Надо смотреть на конкретный кейс и уже тогда решать какие компоненты юзать.
Ну а как пример эксплуатации вьюмоделей и двустороннего связывания - очень полезный фидл.
Ответить с цитированием
  #5 (permalink)  
Старый 29.05.2019, 08:56
Аспирант
Отправить личное сообщение для Ambassador Посмотреть профиль Найти все сообщения от Ambassador
 
Регистрация: 12.11.2015
Сообщений: 68

Infarch - спасибо за разъяснение. Теперь понимаю что меня не туда понесло, мне просто нужен грид и создание/редактирование его записей в окне без какого либо двухстороннего связывания. Сейчас взял Ext.window.Window
а в нем указал:
...
items: [{
    	xtype: 'form',    	
			items: [
...

Пока полет нормальный)))

А в чем суть двухстороненного связывания? Для чего оно требуется кроме как моментальное отображение изменений.
Ответить с цитированием
  #6 (permalink)  
Старый 29.05.2019, 10:26
Аватар для Infarch
Профессор
Отправить личное сообщение для Infarch Посмотреть профиль Найти все сообщения от Infarch
 
Регистрация: 06.06.2014
Сообщений: 290

В осовном для динамического переключения разных компонентов без тыка в специальные кнопки. Есть хороший официальный пример: https://docs.sencha.com/extjs/6.7.0/...wo_way_binding

А еще - для удовлетворения хотелок заказчиков в энтерпрайзе. Они любят чтоб все шевелилось и подмигивало
Ответить с цитированием
  #7 (permalink)  
Старый 29.05.2019, 12:32
Лаборант :-)
Отправить личное сообщение для Pavel M. Посмотреть профиль Найти все сообщения от Pavel M.
 
Регистрация: 08.11.2011
Сообщений: 804

Сообщение от Ambassador
мне просто нужен грид и создание/редактирование его записей в окне без какого либо двухстороннего связывания. Сейчас взял Ext.window.Window
Хватит и обычной Ext.form.Panel с floating: true

И там обычная загрузка записи в форму form.loadRecord(rec);

Недавно делал тестовое задание для одной организации.
Возможно пригодится
https://fiddle.sencha.com/#view/editor&fiddle/2s73
пароль там остался: 123

Последний раз редактировалось Pavel M., 29.05.2019 в 12:51.
Ответить с цитированием
  #8 (permalink)  
Старый 29.05.2019, 17:16
Аспирант
Отправить личное сообщение для Ambassador Посмотреть профиль Найти все сообщения от Ambassador
 
Регистрация: 12.11.2015
Сообщений: 68

Pavel M - за пример спасибо. Уверен что пригодится
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 19:48
Новая система управления сайтом Scripto CMS deepslam Ваши сайты и скрипты 38 31.01.2011 13:55
Модуль для работы с модулями JSprog Ваши сайты и скрипты 29 02.09.2009 12:31
Для чего ограничен поиск? ZoNT Сайт Javascript.ru 4 01.10.2008 14:55