ExtJS Двунаправленная комплексная форма привязки данных - PullRequest
1 голос
/ 13 декабря 2011

дают данные в формате JSON, подобные этим

{имя: {имя: «Имя», фамилия: «Фамилия»}}

Я могу использовать модельотображение модели

fields: [
  {Name: 'firstname', mapping: 'name.firstname'},
  {Name: 'lastname', mapping: 'name.lastname'}
]

Это позволяет нам загружать данные в форму, подобную этой

Имя: [Имя]

Фамилия: [Фамилия]

Однако, когда мы отправляем форму Ext, сериализуем содержимое как

{ "firstname": "New first name", "lastname": "New last name"}  
// instead of 
{ "name": { "firstname": "...", "lastname": "..."} }

Могу ли я сказать Ext для сериализации объекта обратно в форму гнезда, с уважением.

PS: мой файл Edit.js взят из руководства по применению Ext MVC http://docs.sencha.com/extjs/4.2.2/#!/guide/application_architecture

1 Ответ

3 голосов
/ 13 декабря 2011

Вам нужно настроить два свойства в вашем JSON Writer. Вам нужно установить nameProperty: 'mapping' и expandData: true. Например, если вы настраиваете этот модуль записи в прокси в вашей модели, он будет выглядеть следующим образом:

proxy: {
    // other proxy config...
    writer: {
        type: 'json',
        nameProperty: 'mapping',
        expandData: true
    }
}

nameProperty определяет, откуда берется имя свойства для каждого поля: либо свойство name, либо свойство mapping. Итак, используя ваш пример, вы получите такой объект:

{ 'name.firstname': 'New first name', 'name.lastname': 'New last name' }

Это именно то, что вам нужно, и именно здесь приходит expandData. Это говорит ему о расширении этих свойств с разделителями-точками в приведенном выше примере и создании вложенных объектов.

{ 'name': { 'firstname': 'New first name', 'lastname': 'New last name' } }

Docs:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...