2017-02-15 4 views
1

В ExtJs 4 новая запись в магазине получила 0 как идентификатор, прежде чем он будет синхронизирован с сервером. В ExtJs 6 - идентификатор 'Mb.model.images.Image-1'.Новые записи получают значение автогенерированного идентификатора. Как получить 0 как новый идентификатор, как в ExtJs 4?

Ext.define('Mb.model.images.Image', { 
    extend: 'Ext.data.Model', 
    fields: [ 
     {name: 'id', type: 'int'}, 
     {name: 'code', type: 'string'}, 
     {name: 'filename', type: 'string'}, 
     {name: 'path', type: 'string'} 
    ] 
}) 

Возможно ли получить старое поведение в ExtJs 6?

Я посмотрел на identifier: 'sequential', но это назначает идентификатор автоинкремента на стороне клиента, который будет сталкиваться с назначенным идентификатором на стороне сервера.

ответ

2

Нет, это не так. Изменения в ExtsJS 5 вокруг сеансов требуют, чтобы все модели имели уникальный идентификатор.

Вы можете использовать свойство «phantom», чтобы убедиться, что модель никогда не была сохранена. Кроме того, класс Proxy знает, является ли модель фантомом и выдает разные вызовы на сервер в зависимости от статуса фантомного флага (операции «Создать операции против операций обновления»). Любой назначенный на стороне сервера идентификатор затем переопределяет идентификатор только что сохраненной модели.

+0

Спасибо за разъяснение. Тогда это означает две вещи: 1 на сервере я должен игнорировать те идентификаторы клиентской стороны, а 2, когда я показываю идентификатор записи в базе данных в сетке, я скрываю эти бессмысленные автоматически генерируемые строки id. –

+0

В значительной степени. Хотя в 1-м пункте вы можете настроить свой прокси-сервер, чтобы убедиться, что операция «Создать» не отправляет идентификатор, если вы не можете заставить свой бэкэнд понять разницу между Create и Update. –

+0

Это интересный момент. Можете ли вы рассказать, как настроить прокси-сервер, чтобы не отправлять автоматически сгенерированный идентификатор? –