0

我正在尝试使用 Sencha Architect 构建动态图像轮播。我在标签面板中添加了一个轮播。轮播设置为从名为“pictureStore”的商店读取图像。我有一个从商店中提取图像并创建轮播项目的功能 - 我可以从商店获取图像但无法创建轮播。当我尝试使用 carouself.setItems() 或 carousel.add() 时,出现错误“对象 # 没有方法”。如果我创建动态轮播的方法不正确,请查看并告诉我。感谢您的帮助和有关如何修复的知识

谢谢,

读取图像和创建轮播项目的功能(直到下面的评论):

onMycarouselActivate: function(container, newActiveItem, oldActiveItem, options) {
        Ext.getStore('pictureStore').load(function(pictures) {
            var items = [];

            Ext.each(pictures, function(picture) {
                console.log(picture.get('image'));
                if (!picture.get('image')) {
                    return;
                }

                items.push({
                    xtype: 'myimage',
                    picture: picture
                });
            });

            //following doesn't work for adding the carousel images:

            //carousel.setItems(items);
            //carousel.add(items);
            //carousel.items = [{html: items}];
            //carousel.add(carousel.items);
            //carousel.setActiveItem(0);
        });
    },

带有图像信息的 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' 
4

3 回答 3

0

你可以试试这个,这对我有用......

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') + '"/>'
                });
            }
        });
 });

希望对你有帮助...

于 2013-09-18T05:09:30.387 回答
0

试试这个代码

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

其中 myCarousel 是轮播的对象。

于 2012-07-24T05:58:04.987 回答
0

如果您的变量carousel没有方法add,或者setItems它可能不是您的轮播。

为了确保这一点,您可以尝试console.log(carousel);弄清楚它到底是什么。此外,它似乎没有在您的代码中的任何地方声明......

但这很容易修复。我假设您已经在轮播中添加了一个事件侦听器来侦听activate事件,如果您查看此事件的文档,您会看到发送给回调函数的第一个参数是容器(在这种情况下,您的旋转木马)

所以你必须写的是:

onMycarouselActivate: function(carousel, newActiveItem, oldActiveItem, options) {

而不是这个

onMycarouselActivate: function(container, newActiveItem, oldActiveItem, options) {

你应该准备好了

编辑

此外,如果您查看图像组件的文档,您会看到配置中没有picture,但有一个src属性。所以你应该写:

items.push({
  xtype: 'myimage',
  src: picture
});

希望这有帮助

于 2012-07-23T20:06:36.783 回答