Sencha touch 2 Sencha Touch 2转盘。setItems()不工作

Sencha touch 2 Sencha Touch 2转盘。setItems()不工作,sencha-touch-2,sencha-architect,Sencha Touch 2,Sencha Architect,我正在尝试使用Sencha Architect构建一个动态图像旋转木马。我有一个旋转木马添加到选项卡面板。旋转木马被设置为从一个名为“pictureStore”的商店读取图像。我有一个从商店提取图像并创建旋转木马项目的功能-我可以从商店获取图像,但无法创建旋转木马。当我尝试使用carouself.setItems()或carousel.add()时,我得到一个错误“Object#has no method”。请看一看,让我知道如果我的方法是不正确的创建一个动态旋转木马。我感谢你的帮助和知识,如何

我正在尝试使用Sencha Architect构建一个动态图像旋转木马。我有一个旋转木马添加到选项卡面板。旋转木马被设置为从一个名为“pictureStore”的商店读取图像。我有一个从商店提取图像并创建旋转木马项目的功能-我可以从商店获取图像,但无法创建旋转木马。当我尝试使用carouself.setItems()或carousel.add()时,我得到一个错误“Object#has no method”。请看一看,让我知道如果我的方法是不正确的创建一个动态旋转木马。我感谢你的帮助和知识,如何修复

谢谢

用于读取图像和创建旋转木马项目的函数(直到下面的注释为止):

带有图像信息的JSON示例

{
    "test": {
        "cat": {
            "entries": [
                {
                    "image": "/images/1.png"
                },
                {
                    "image": "/images/2.png"
                }
            ]
        }
    }
}
使用carousel.add或carousel.setItems时出现错误消息:

Object #<HTMLDivElement> has no method 'add' 
Object #<HTMLDivElement> has no method 'setItems' 
Object#没有方法“add”
对象#没有方法“setItems”

如果变量
carousel
没有方法
add
setItems
,那么它可能不是您的carousel

为了确保这一点,您可以尝试执行
console.log(carousel)以确定它到底是什么。而且,它似乎没有在代码中的任何地方声明

但修复起来很简单。我假定您已经向转盘添加了一个事件侦听器,该侦听器侦听
activate
事件,如果查看,您可以看到发送到回调函数的第一个参数是容器(在本例中是转盘)

所以你要写的是:

onMycarouselActivate: function(carousel, newActiveItem, oldActiveItem, options) {
而不是这个

onMycarouselActivate: function(container, newActiveItem, oldActiveItem, options) {
你应该准备好了

编辑

另外,如果查看,您可以看到配置中没有
图片
,但有一个
src
属性。所以你应该写:

items.push({
  xtype: 'myimage',
  src: picture
});
希望这有帮助

试试这段代码

 myCarousel.add({
                    xtype: 'image',
                    scr:'path of image'
                });

其中myCarousel是carousel的对象。

您可以试试这个,这对我很有用

Ext.getStore('Pictures').load(function(pictures) {

        Ext.each(pictures, function(picture) {
            if (picture.get('image')) {

                carousel.add({
                        html: '<img style="max-width: 100%; max-height: 100%;" src="' + picture.get('image') + '"/>'
                });
            }
        });
 });
Ext.getStore('Pictures')。加载(函数(图片){
Ext.each(图片、功能(图片){
if(picture.get('image')){
旋转木马({
html:'
});
}
});
});

希望这能帮助您……

当您通过Architect创建侦听器时,它将容器作为第一个参数,并且除了通过Architect之外的代码之外,似乎没有其他方法来更改它。我这样做了,并且能够克服错误,但是图像仍然没有添加到旋转木马,尽管我现在在屏幕上看到了旋转木马。我遵循了这个示例,如果这对任何人都有帮助,那么它只是一个变量名,所以如果架构师将其命名为“container”,那么在代码中使用container。另请参阅我编辑的答案。再次感谢,我应用了你的更新,但仍然无法显示图像。我试图通过调用carousel.doLayout()和Ext.getCmp('carousel').doLayout()来强制更新;在setItems()之后,但获取对象#的错误时没有方法“doLayout”。我不确定问题是这个函数在ST2中不再存在了。在尝试之前请阅读文档。doLayout()具有各种渲染时间疯狂,您应该尝试永远不要使用它。
Ext.getStore('Pictures').load(function(pictures) {

        Ext.each(pictures, function(picture) {
            if (picture.get('image')) {

                carousel.add({
                        html: '<img style="max-width: 100%; max-height: 100%;" src="' + picture.get('image') + '"/>'
                });
            }
        });
 });