2016-03-29 6 views
0

У меня есть прокси-хранилище, которое извлекает информацию из веб-службы, я хотел бы показать эту информацию в панели в виде грида, в котором я установил параметр dataIndex для привязка в извлеченных данных.ExtJS 6 - Связать данные прокси для формирования

Как я могу достичь этой цели без дополнительного кодирования, возможно ли это?

Что-то вроде этого:

Expected result

Proxy Store:

Ext.define('MyStore', { 

    extend: 'Ext.data.Store', 
    alias: 'store.myStore', 
    model: 'myModel', 
    autoload: true, 

    proxy: { 
    type: <wsType>, 
    url: <wsUrl> 
    }, 
    scope: this 

}); 

Группа:

Ext.define('<myPanel>', { 

    extend: 'Ext.panel.Panel', 

    ... 

    store: Ext.create(<myStore>), 

    ... 


    items: [ 
    { 
    xtype: 'titlePanel', 
    cls: 'titlePanel', 
    html: '<div class="titlePanel"><h1>My Title</h1></div>', 
    }, 
    { 
     xtype: 'form', 
     layout: 'vbox', 
     cls: 'whitePanel', 
     items: [ 
     { 
     xtype: 'panel', 

     layout: 'column', 
     items: [ 
     { 
      xtype: 'displayfield', 
      displayField: 'name', 
      dataIndex: 'name', 
      fieldLabel: Ext.locale.start, 
      name: 'start' 
     }, 
    ... 
+0

Обычно магазин используется для нескольких записей, если вы просто хотите отображать только записи в дисплее форма. Почему вы не можете определить прокси на уровне модели и использовать Model.load для загрузки одной записи. – JChap

+0

Это абсолютно верно! Спасибо, у вас есть простой пример? –

ответ

3

Вам не нужно магазин для отображения одной записи. Прокси-сервер можно определить на уровне модели.

Ext.define('MyApp.model.Contact', { 
    extend: 'Ext.data.Model', 
    fields: ['id', 'firstName', 'middleName', 'lastName'], 
    proxy: { 
     type: 'ajax', 
     url: 'contacts.json', 
     reader: { 
      type: 'json', 
      rootProperty: 'data' 
     } 
    } 
}); 

нагрузки модель либо вид конструктора/InitComponent или метод контроллера инициализации после того, как загружен толкать запись в ViewModel.

initComponent: function() { 
    this.callParent(arguments); 
    var me = this; 
    MyApp.model.Contact.load(1, { 
     success: function(record, operation) { 
      me.getViewModel().set('contact', record); 
     } 
    }) 
}, 

Bind модель собственность на поле индикации

 items: [{ 
      name: 'firstName', 
      fieldLabel: 'First Name', 
      bind: '{contact.firstName}', 
      xtype: 'displayfield' 
     }] 

А вот скрипка https://fiddle.sencha.com/#fiddle/17t2

+0

Супер удивительный, вот что я точно искал! Благодарю. –

+0

Что мне делать в случае, если мне нужно это поведение, но теперь возвращенный json содержит 2 поля массива для заполнения двух разных сеток? –

Смежные вопросы