如何在绘画上重新加载carouse项目? Sencha触摸

时间:2013-05-23 07:53:27

标签: extjs sencha-touch carousel

我想在轮播onPainted()方法中重新加载项目。因此,每当用户来到旋转木马项目时,我们就会有一个新的旋转木马项目列表。此时出现问题(请查看源代码),轮播重新加载项目,但是直到我触摸旋转木马,第一个轮播项目为空白(或未选中)且未选择任何项目。我想至少看到要选择的第一个元素。

所以这是简化的源代码:

Ext.define("APN.view.FeaturedCarousel", {
    config: {
        listeners: {
            painted: function(carousel, eOpts) {
                var features_url = Ext.getStore("regionalisation").getRegionalisedMenus().feature.url;
                this.setCarouselStore(features_url);
            }
        }
    },
    initialize: function () {
        this.callParent();
        var me = this;
        var features_url = Ext.getStore("regionalisation").getRegionalisedMenus().feature.url;
        this.setCarouselStore(features_url);
    },
    setCarouselStore: function (features_url) {
        var me = this;

        Ext.Ajax.request({
            url: features_url,
            success: function (response) {
                me.removeAll();
                if (!xml) return;

                var store = Ext.create('Ext.data.Store', {
                    autoLoad: true,
                    fields: [
                    ],
                    data: xml,
                    proxy: {
                        type: 'memory',
                        reader: {
                            type: 'xml',
                            rootProperty: 'xml',
                            record: 'item'
                        }
                    }
                });

                store.each(function (record) {
                    var item = Ext.create("Ext.Container", {
                        html: "some HTML HERE"
                    });

                    me.add(item);
                });
            }
        });
    }
});

1 个答案:

答案 0 :(得分:1)

我认为一旦添加了所有项目,您应该激活轮播中的第一项。像这样:

  store.each(function (record) {
    var item = Ext.create("Ext.Container", {
      html: "some HTML HERE"
    });

    me.add(item);
  });

  me.setActiveItem(0);

这应该选择第一个项目。

如果您想在每次激活时更改轮播内容,请使用“active”侦听器。因为“painted”只会被调用一次,如果你想要,那么添加painted事件就没有意义,因为你已经在“{{1”中调用了“setCarouselStore”函数“方法。