0

Sencha Architect を使用して動的な画像カルーセルを構築しようとしています。タブ パネルにカルーセルを追加しました。カルーセルは、「pictureStore」というストアから画像を読み取るように設定されています。ストアから画像を取得してカルーセル アイテムを作成する機能があります。ストアから画像を取得できますが、カルーセルを作成できません。carousel.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

変数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 に答える
0

このコードを試してください

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

myCarousel はカルーセルのオブジェクトです。

于 2012-07-24T05:58:04.987 に答える