Sencha Touch: содержимое моего хранилища данных отображается в представлении только после второго обновления веб-страницы. Зачем? - PullRequest
0 голосов
/ 20 сентября 2011

Я занимаюсь разработкой простого приложения, в котором я получаю данные с использованием YQL и сохраняю их в базе данных localhost.Я успешно могу хранить данные в базе данных localhost и получить их тоже.Единственная проблема - я вижу, что мои данные отображаются только после второго обновления, и я не могу понять почему!

Под вторым обновлением я подразумеваю, что я удаляю записи из базы данных localhost и запускаю код.Поэтому в первый раз я получаю пустое представление без данных.После обновления я вижу, что мои данные заполняются на веб-странице.

Вот мой контроллер

 Ext.regController('Index', {
   index: function () {

   var mainStoryStore = Ext.getStore('MainStoryStore');

   if(!mainStoryStore.first())
   {
     Ext.YQL.makeYqlRequest('news');
     this.retrieveContent(mainStoryStore);
   }
   else
   {
     this.retrieveContent();
   } 

  },

 retrieveContent: function () {
   var mainStoryStore = Ext.getStore('MainStoryStore');
    if(!this.mainView) {
      this.mainView = this.render({
      xtype: 'Main'
    });
    this.application.viewport.setActiveItem(this.mainView);
   }
   else 
   {
     this.application.viewport.setActiveItem(this.mainView,{
       type: 'slide',
       direction: 'right'
     });  
  }


 Ext.getCmp('topcontent').update(Ext.getStore('MainStoryStore').data.items);


  console.log(Ext.getStore('MainStoryStore').data.items);  //When I do this I get data from the store both in my first and second refresh


  Ext.getCmp('content').update(Ext.getStore('MainStoryStore').data.items);

  }, 

});

Вот один из моих взглядов.Другой вид с id:'content' имеет аналогичную структуру и шаблон.

 MyApp.views.topTile = Ext.extend (Ext.Panel, {
  dock:'top',
  id:'topcontent',
  height:214,

  showAnimation:{
    type:'fade',
    duration:700,
  },
 // onItemDisclosure: true,

initComponent: function () {
  itemTpl = new Ext.XTemplate(
      //'<tpl if="item">',
          '<tpl for=".">',
           '<tpl if="internalId === 1">',
          '<tpl for="data">',
              '<div class="catImage">',
                  '<a href="#" onclick=\'javascript:goToURL(\"{link}\");\'><img src="{mimage}"></a>',
                  '<div class="{adClass} titleBack"></div>',
                  '<a href="#" onclick=\'javascript:goToURL(\"{link}\");\' class="{adClass} catTitle {custClass}">{title}</a>',
              '</div>',
              '<div class="catBox">',
                  '<span class="catDesc">{description}</span>',
                  '<span class="catDate">{pubDate}</span>',
                  '<span class="moBo"><a href="#" onclick=\'javascript:goToURL(\"{link}\");\'>More</a></span>',
              '</div>',
          '</tpl>',
          '</tpl>',
          '<div class="ender"></div><div class="ender"></div>',
      '</tpl>'
    ),

  Ext.apply(this,{
    tpl: itemTpl,


  }),


   MyApp.views.topTile.superclass.initComponent.apply(this, arguments);
 },

});
...