2016-11-08 2 views
0

Мне пришлось обновить с 4.1.2 до 5.1.1 только ради столбцов виджетов. У меня возникают проблемы с тем, чтобы работать с ассоциациями.Взаимодействие с наследием Имеет одну ассоциацию в Extjs 5.1.1

У меня есть модель, которая выглядит следующим образом:

Ext.define('PP.model.LM.FOOModel', { 
    extend: 'Ext.data.Model', 

    requires: [ 
     'Ext.data.field.Field' 
    ], 

    fields: [ 
     { 
      name: 'ID' 
     }, 
     //Boatload of simple fields 
    ], 

    hasOne: { 
     model: 'PP.model.LM.FOO1Model', 
     name: 'FOO1', 
     associationKey: 'FOO1' 
    } 
}); 

Когда я взаимодействовать с моделью, нет геттер \ присваиватели, и данные FOO1Model является присутствует только в качестве объекта, который можно получить от

record.get('FOO1'); 

Может ли кто-нибудь указать, что именно я делаю неправильно?

Я попытался сделать это с новым подходом - создав поле со ссылкой на нужную модель. Он отлично работает, когда я вызываю setFoo1, а затем делаю get. Но.

Когда я делаю запрос Ajax и пытаюсь прочитать полученный JSON с помощью Ext.data.reader.Json, он, похоже, не понимает, что определенное свойство объекта фактически является ассоциированной моделью. Данные в Foo1 отображаются в модели как объект в свойстве Foo1. Reqest возвращает массив моделей с множеством FooModels.

Json выглядит следующим образом:

{ 
    "root": [{ 
     "ID": 4241, 
     "Foos": [{ 
      ID: 2237, 
      "Foo1": { 
       "ID": 1216 
      } 
     }] 
    }], 
    "success": true 
} 

ответ

0

Кажется, что hasOne не существует в ExtJS 5.1 теперь делается так:

fields: [{ 
    name: 'addressId', 
    reference: 'Address', 
    unique: true 
}] 

Регулярно проверяйте Model апи для получения дополнительной информации.

+0

Я обновил пост. Любые предложения для этого? Заранее спасибо. –

0

Пришлось отлаживать Ext.data.reader.Json, чтобы понять. Ключ передавал ассоциацию Key в справочной конфигурации. Если это не указано, читатель предположит, что данные для ассоциации находятся в поле «_foo1» в JSON.

Оговаривается ли это где-либо в документах sencha? Я так не думаю. Должен ли я чувствовать себя глупым, чтобы не догадываться об этом?

Образец для несчастных бедных дерна, как я, которые могут возникнуть проблемы в будущем:

{ 
    name: 'Foo1', 
    reference: {  
     type: 'FOO1Model', 
     association: 'Foo1', 
     associationKey: 'Foo1' 
    }, 
    unique: true 
} 
Смежные вопросы