ExtJS 5: Понимание свойств конфигурации Ext.data.field.Field.reference

Я пытаюсь понять, что делают конфиги Ext.data.field.Field.reference, так как имена немного неловкие. То, что я пытаюсь сделать, это иметь данные, которые выглядят так:

[{
  name: 'Mulder',
  state: 'Virginia',
  friends: [{
    name: 'Scully',
    type: 'partner'
  }, {
    name: 'Smoking Man',
    type: 'dad'
  }]
}]

И переварить это с помощью моделей, поэтому я создаю их так:

Ext.define('Agent', {
  extend: 'Ext.data.Model',
  fields: ['name', 'state']
});
Ext.define('Relationship', {
  extend: 'Ext.data.Model',
  fields: ['name', 'type', {
    name: 'agentId',
    reference: {
      type: 'Agent',
      inverse: {
        role: 'friends'
      }
    }
  }]
});

Причина, по которой я обращаюсь как объект в модели отношений, заключается в том, что этот поток... в основном, я хотел, чтобы моя модель называла что-то не так, как извлеченные данные, поэтому вместо Friend модель, я хочу, чтобы она называлась Relationship и ссылка friends в данных, но все это было без документов. После того, как я решил это, я создал свой магазин ( протестируйте Fiddle здесь):

Ext.create('Ext.data.Store', {
  model: 'Agent',
  autoLoad: true,
  proxy: {
    type: 'ajax',
    url: 'data3.json',
    reader: {
      type: 'json'
    }
  },
  listeners: {
    load: function(store) {
      // outputs friends as a function and getFriends as null
      console.log('Agent', store.first().friends, store.first().getFriends);
    }
  }
});

Так что я пытаюсь сделать так, чтобы мой метод getter для друзей назывался getFriends вместо friends Но, глядя на документацию, я не совсем уверен, какой конфиг я использую, чтобы указать это. Я пробовал те, которые кажутся вероятным кандидатом (ассоциация, роль и обратный). На данный момент, я почти уверен, что это свойство, которое я установил в обратном объекте, но, видя, что это недокументировано, я бы не знал.

Ранее в версии 4 у нас было hasMany ассоциации, но это, кажется, отталкивается / недокументировано вместо reference путь. Мы бы сделали то, что я пытаюсь сделать, добавив это к Agent модель (см. Fiddle для рабочего примера):

hasMany: [{
  model: 'RelationshipHasMany',
  associationKey: 'friends',
  name: 'getFriends'
}]

Кто-нибудь знает, как назвать мой геттер? Может быть, вы могли бы также объяснить, что свойства association а также role делать.

1 ответ

Решение

Вы хотите использовать getterName:

inverse: {
    role: 'friends',
    getterName: 'getFriends'
}
Другие вопросы по тегам