2013-02-15 1 views
3

Я пытаюсь загрузить данные JSON в NestedList. У меня есть следующий магазин файл в /app/store/Exhibits.jsSencha Touch 2: «указанный магазин не найден»

Ext.define('VisitTCMIndy.store.Exhibits',{ 
requires: ['VisitTCMIndy.model.Exhibit', 'Ext.data.proxy.JsonP'], 
extend: 'Ext.data.TreeStore', 
config: { 
    model: 'VisitTCMIndy.model.Exhibit', 
    proxy: { 
     type: 'jsonp', 
     url: 'http://www.example.com/explore.php', 
     reader: { 
      type: 'json', 
      rootPropery: 'children' 
     } 
    } 
} 
}); 

Тогда я сослаться на него в следующем виде в /app/view/Explore.js

Ext.define('VisitTCMIndy.view.Explore', { 
extend: 'Ext.Container', 
requires: [ 
    'Ext.data.TreeStore', 
    'Ext.dataview.NestedList', 
    'VisitTCMIndy.store.Exhibits', 
], 
xtype: 'explorecard', 
config: { 
    iconCls: 'compass1', 
    title: 'Explore', 
    layout: 'fit', 
    items: [ 
     { 
      xtype: 'titlebar', 
      docked: 'top', 
      title: 'Explore' 
     }, 
     { 
      xtype: 'nestedlist', 
      fullscreen: true, 
      store: 'VisitTCMIndy.store.Exhibits', 
      detailCard: { 
       html: 'Explore Details' 
      }, 
      listeners: { 
       leafitemtap: function(nestedList, list, index, target, record){ 
        var detailCard = nestedList.getDetailCard(); 
        detailCard.setHtml('Exhibit Title: '+ record.get('title')); 
       } 
      } 
     } 

    ] 
} 
}); 

я получаю следующее предупреждение и пустой список, когда я иду на страницу:

[WARN] [Ext.dataview.NestedList # applyStore] указанный магазин не может быть найден

За всю свою жизнь я не могу понять, что я делаю неправильно.

ответ

5

Ok. Оказывается, я должен был объявить свой магазин и модель в файле app.js. Затем обратитесь к моему магазину только по его имени без остальной части определения класса. Таким образом, я добавил следующее к моему app.js файла:

models: ['Exhibit'], 
stores: ['Exhibits'], 

Тогда вот мой обновленный вид файла Explore.js.

Ext.define('VisitTCMIndy.view.Explore', { 
extend: 'Ext.Container', 
requires: [ 
    'Ext.data.TreeStore', 
    'Ext.dataview.NestedList', 
    'VisitTCMIndy.store.Exhibits', 
], 
xtype: 'explorecard', 
config: { 
    iconCls: 'compass1', 
    title: 'Explore', 
    layout: 'vbox', 
    items: [ 
     { 
      xtype: 'titlebar', 
      docked: 'top', 
      title: 'Explore' 
     }, 
     { 
      xtype: 'nestedlist', 
      store: 'Exhibits', 
      title: 'Museum Levels', 
      displayField: 'title', 
      detailCard: { 
       html: 'Explore Details' 
      }, 
      listeners: { 
       leafitemtap: function(nestedList, list, index, target, record){ 
        var detailCard = nestedList.getDetailCard(); 
        detailCard.setHtml('<div style="text-align:center;margin:.5em;"><img src="'+record.get('image')+'" alt="'+record.get('title')+'" />'+ 
         '<p style="text-align:left;">'+record.get('text')+'</p></div>' 
        ); 
       } 
      }, 
      flex: 1 
     } 

    ] 
} 
}); 

Кроме того, обратите внимание, что я изменил компоновку с fit на vbox. Я должен был сделать это и дать списку flex of 1, чтобы список действительно показывал, что он загружал данные.

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

  • Нет связанных вопросов^_^