2013-08-19 1 views
0

Я пытался попытаться сделать динамический карусель в sencha touch 2.1.1, который извлекает изображения из wordpress json data. , но когда я вызываю загрузчика в магазине, он дает и ошибка . я испытал это на другом демо сенча приложение он работал отлично там, но когда я добавить его здесь он показывает ошибкуНевозможно вызвать метод 'add' of undefined

Uncaught TypeError: Cannot call method 'add' of undefined 

Я делюсь мой взгляд, файлы модели, и хранить здесь

Ext.define('Flugelsoft.view.Portfolio', { 
    extend:'Ext.Container' , 
    xtype: 'portfolio', 
    fullscreen: true, 
    //store:'Portfolios', 

requires: ['Flugelsoft.store.Portfolios', 'Ext.dataview.List', 'Ext.Img','Ext.carousel.Carousel'], 

    config: { 
      layout: { 
         type: 'fit' 
      }, 

      items: [ 

      { 
        xtype: "carousel", 
        id: 'carouselid' 

      } 
     ] 



    } 
}); 

store.js файл

var token=localStorage.getItem("access_token"); 

Ext.define("Flugelsoft.store.Portfolios", { 
extend: "Ext.data.Store", 
requires: ["Ext.data.proxy.JsonP"], 
config: { 
model: "Flugelsoft.model.Portfolio", 
autoLoad: true, 

proxy: { 
    type: 'jsonp', 
    url: 'http://www.flugelsoft.net/?json=get_category_posts&category_id=2&access_token='+token, 
    reader: { 
     type: 'json', 
     rootProperty: 'posts' 
     } 
    }, 

}  

    }); 

var newPanel = Ext.create('Flugelsoft.store.Portfolios', { 
    listeners:{ 
    load: function(me, records, successful, operation, eOpts){ 
     console.log("data loaded", records); 
     myCarousel = Ext.getCmp('carouselid'); 
     for(var i=0; i<records.length; i++){ 

     //THE ERROR IS GENERATING IN THIS LINE myCarousal.add 
      myCarousel.add({ 
       xtype: 'image', 
       src: records[i].get('thumbnail') 
      }); 
     } 
    } 
} 

}); 

model.js файл

Ext.define('Flugelsoft.model.Portfolio',{ 
      extend:'Ext.data.Model', 

      config:{ 
       fields: [{name: 'title', type: 'string'},{name: 'content', type: 'string'},{name:'thumbnail',type:'image/png'}] 
      } 


}); 

Спасибо заранее

ответ

2

Прежде всего, вы должны добавить Portfolio вид в окне проекции, прежде чем вызвать Ext.getCmp('carouselid');

Модель

Ext.define('GoodNews.model.Portfolio',{ 
    extend:'Ext.data.Model', 
    config:{ 
     fields: [{name: 'title', type: 'string'}, 
       {name: 'content', type: 'string'}, 
       {name:'thumbnail',type:'string'}] 
     //thumbnail should be url for accessing picture from the server 
    } 
}); 

магазин

Ext.define("GoodNews.store.Portfolios", { 
    extend: "Ext.data.Store", 
    requires: ["Ext.data.proxy.JsonP"], 
    config: { 
     model: "GoodNews.model.Portfolio", 
     autoLoad: true, 
       proxy: { 
        type: 'jsonp', 
        url: 'http://www.flugelsoft.net/?json=get_category_posts&category_id=2&access_token='+token, 
        reader: { 
        type: 'json', 
        rootProperty: 'posts' 
        } 
     }, 
    } 
}); 

Добавить portfolio

Ext.Viewport.add({xtype : 'portfolio'}); 

var newPanel = Ext.create('GoodNews.store.Portfolios', { 
    listeners:{ 
     load: function(me, records, successful, operation, eOpts){ 
      console.log("data loaded", records); 
      myCarousel = Ext.getCmp('carouselid'); 
      for(var i=0; i<records.length; i++){ 
       myCarousel.add({ 
       xtype: 'image', 
       src: records[i].get('thumbnail') 
       }); 
      } 
     } 
    } 
    });  

Там нет типа image/png поля в сенче прикосновении. следующие типы только действительные

  1. авто: Object
  2. булево: Object
  3. Дата: Объект
  4. поплавок: Object
  5. целое: Объект
  6. номер: Object
  7. строка: Object
+0

: После выполнения своих шагов он показывает я до этой ошибки {Неудачная ошибка: [Ext.createByAlias] Не удается создать экземпляр нераспознанного псевдонима: widget.portfolio} –

+0

@ user2226699 Вы добавили представление Портфолио в массиве app.js views? – Viswa

+0

да я положил в массив представлений –