如何从商店动态获取图像到旋转木马煎茶触摸 2

Posted

技术标签:

【中文标题】如何从商店动态获取图像到旋转木马煎茶触摸 2【英文标题】:How to get dynamically images from the store to the carousel sencha touch 2 【发布时间】:2013-06-19 14:28:47 【问题描述】:

我正在尝试从商店获取图像,并控制图像的数量,并为每个轮播显示 12 张图像,所有这些都取决于商店中的图像数量,如果最多为前:12,为其余部分创建另一个轮播... 但我试图从商店中获取图像并将其加载到轮播中,但我的视图是空的,什么都没有显示..

型号:

  Ext.define("MyApp2.model.ApplicationModel", 
    extend: "Ext.data.Model",
    config: 
      //type:'tree',
      fields: [
        name: 'id', type: 'auto',
        name: 'name', type: 'auto',
        name:'icon',type:'image/jpg'
      ]
    
 );

商店:

    var token=localStorage.getItem("access_token");
    Ext.define("MyApp2.store.ApplicationStore", 
    extend: "Ext.data.Store",
    requires: ["Ext.data.proxy.JsonP"],
    config: 
    model: "MyApp2.model.ApplicationModel",
    autoLoad: true,
    id :'ApplicationStr',
    proxy: 
      type: 'jsonp',
      url: 'http://mysite.com/api/applications?format=jsonp&access_token='+token,
      reader: 
        type: 'json',
        rootProperty: 'applications'
      
    

       
  );

     var store = Ext.create('MyApp2.store.ApplicationStore');
       store.getStore('ApplicationStr');

                myCarousel = Ext.getCmp('carouselid');
                store.each(function(record) 
                    myCarousel.add(
                        html: '<img src=' + record.get('icon') + '/>'
                    );
                );

观点:

  Ext.define('MyApp2.view.MainMenu', 
extend: 'Ext.Panel',
requires: ['Ext.TitleBar', 'MyApp2.store.ApplicationStore', 'Ext.dataview.List', 'Ext.Img'],
alias: 'widget.mainmenuview',
config: 
    layout: 
        type: 'fit'
    ,
    items: [
            xtype: 'titlebar',
            title: 'My Apps',
            docked: 'top',
            items: [
                
                    xtype: 'button',
                    text: 'Log Off',
                    itemId: 'logOffButton',
                    align: 'right'
                
            ]
        ,
        
            xtype: "carousel",
            id: 'carouselid'


        


    ],
    listeners: [
            delegate: '#logOffButton',
            event: 'tap',
            fn: 'onLogOffButtonTap'
        ]
,
onLogOffButtonTap: function() 
    this.fireEvent('onSignOffCommand');

);

【问题讨论】:

【参考方案1】:

可能是在您开始迭代之前未加载存储中的数据。为了避免这种情况,您应该始终在加载事件回调中使用数据。

您可以做两件事,在商店中添加负载侦听器并在其中进行轮播填充

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(
                html: '<img src=' + records[i].get('icon') + '/>'
            );
        
    

或者您可以在需要时手动调用 load 并在回调中执行如下操作:

store.load(
    callback: function(records, operation, success) 
        myCarousel = Ext.getCmp('carouselid');
        for(var i=0; i<records.length; i++)
            myCarousel.add(
                html: '<img src=' + records[i].get('icon') + '/>'
            );
        
    ,
    scope: this
);

【讨论】:

以上是关于如何从商店动态获取图像到旋转木马煎茶触摸 2的主要内容,如果未能解决你的问题,请参考以下文章

多件煎茶旋转木马

煎茶旋转木马不工作

如何在sencha touch中将图像从商店动态绑定到轮播

在百里香弹簧靴中,动态旋转木马滑块不起作用

如何在煎茶触摸中添加不同屏幕分辨率的图像?

iPhone iOS:如何在图像背景上动态移动/调整图像大小?