2012-04-01 2 views
1

Вот мой App код:Сенча Touch 2 - Мой Ext.List не появляется

Ext.application({ 
    name: 'ProjectName', 
    appFolder: APP_URL + "app", 

    // phoneStartupScreen: 'LOGO.png', 

    controllers: ['Site_inside'], 
    views: ['Inside_spotlist'], 
    models: ['Spot'], 
    stores: ['Spots'], 

    launch: function() { 
     //bootstrap 
     console.log("inner site bootstrap"); 

     //var spotlist = Ext.create("ProjectName.view.Inside_spotlist"); 

     Ext.Viewport.add({ 
      xclass: 'ProjectName.view.Inside_spotlist' 
     }); 

     return true; 
    } 
}); 

Посмотреть код 'Inside_spotlist':

Ext.define('ProjectName.view.Inside_spotlist', { 
    extend: 'Ext.List', 
    alias: 'spotlist', 
    xtype: 'spotlist', 

    requires: [ 
     'ProjectName.store.Spots' 
    ], 

    config: { 
     store: 'Spots', 
     itemTpl: '{first_name} {last_name}' 
    }, 

    initialize: function() { 
     console.log("spolist loaded"); 
    } 
}); 

код модели 'спот':

Ext.define("ProjectName.model.Spot", { 
    extend: 'Ext.data.Model', 

    config: { 
     fields: [ 
      { 
       name: 'firstName', 
       type: 'string' 
      }, 
      { 
       name: 'lastName', 
       type:'string' 
      } 
     ] 
    } 
}); 

И, наконец, Магазин пятен:

Ext.define("ProjectName.store.Spots", { 
    extend: 'Ext.data.Store', 

    config: { 
     listeners: { 
      load: function() { 
       console.log("loaded store"); 
      } 
     }, 

     autoLoad: true, 
     autoSync: true, 

     model: 'ProjectName.model.Spot', 
     data:[ 
      { 
       firstName: 'test', 
       lastName: 'test2' 
      } 
     ] 
    } 
}); 

Он загружается нормально (отображаются сообщения консоли, сообщения об ошибках или предупреждения), но список с моими тестовыми данными не отображается. Если я попытаюсь «захватить» сайт вверх и вниз, появится правая панель прокрутки в стиле iOS, но в списке нет данных.

В чем проблема с этим кодом?

ответ

0

вы можете попробовать это:

Ext.Viewport.add(
    Ext.create('ProjectName.view.Inside_spotlist') 
); 

вместо этого:

Ext.Viewport.add({ 
    xclass: 'ProjectName.view.Inside_spotlist' 
}); 

дополнительно ....

вы можете попробовать это:

config: { 
    store: 'ProjectName.store.Spots', 
    itemTpl: '{first_name} {last_name}' 
} 

вместо это:

config: { 
    store: 'Spots', 
    itemTpl: '{first_name} {last_name}' 
} 
0

Я бы порекомендовал вам следовать конвенции описано здесь: Loading data into List using store sencha touch 2

Хотя комментарии в этом ответе, кажется, указывают, что человек, который задал этот вопрос делает это по-своему, я не уверен, как это работает , Попробуйте сделать это так, как описано в ответе, то есть сделайте экземпляр магазина с помощью Ext.create, а затем используйте Ext.data.StoreManager.lookup, чтобы найти и использовать этот экземпляр там, где он вам нужен. Ваша проблема здесь в том, что свойство store в вашем списке не имеет экземпляра вашего магазина.

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