1

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

所以这里是简化的源代码:

Ext.define("APN.view.FeaturedCarousel", {
    配置:{
        听众:{
            绘制:功能(轮播,eOpts){
                var features_url = Ext.getStore("regionalisation").getRegionalisedMenus().feature.url;
                this.setCarouselStore(features_url);
            }
        }
    },
    初始化:函数(){
        this.callParent();
        变我=这个;
        var features_url = Ext.getStore("regionalisation").getRegionalisedMenus().feature.url;
        this.setCarouselStore(features_url);
    },
    setCarouselStore: 函数 (features_url) {
        变我=这个;

        Ext.Ajax.request({
            网址:features_url,
            成功:功能(响应){
                我.removeAll();
                如果(!xml)返回;

                var store = Ext.create('Ext.data.Store', {
                    自动加载:真,
                    字段:[
                    ],
                    数据:xml,
                    代理人: {
                        类型:'内存',
                        读者:{
                            类型:'xml',
                            根属性:'xml',
                            记录:'项目'
                        }
                    }
                });

                store.each(函数(记录){
                    var item = Ext.create("Ext.Container", {
                        html: "这里有一些 HTML"
                    });

                    我.添加(项目);
                });
            }
        });
    }
});
4

1 回答 1

1

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

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

    me.add(item);
  });

  me.setActiveItem(0);

这应该使第一个项目被选中。

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

于 2013-05-23T08:19:27.640 回答