1

以下のコードの最後の 2 行に項目を追加する方法がわかりません。flickr からの画像が正しく読み込まれています。TR.view.photoset.Carousel.add(items) の結果、エラー メッセージが表示されました

「キャッチされていない TypeError: オブジェクト関数 () { return this.constructor.apply(this, arguments); } にはメソッド 'add' がありません」

Ext.define('TR.view.photoset.Carousel', {
extend: 'Ext.carousel.Carousel',
alias: 'widget.photosetcarousel',
config: {
        store: 'PhotosetPhotos',
        itemTpl: '<img src="http://src.sencha.io/{[Ext.Viewport.getOrientation()]}/{photo_url}" />',
        title: 'Flickr Photoset',
        iconCls: 'hot',
        iconMask: true,

        scrollable: {
            direction: 'vertical',
            directionLock: true
        },          
},

initialize: function( me ) {
    var store = Ext.getStore('PhotosetPhotos');

    store.clearFilter(true);
    store.filter('photoset', '72157632230262446' );
    store.load();       

    store.load( function(pictures , operation ) {
        var items = [];

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

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

        // fill items into carousel above
     {???}.add(items);
     {???}.setActiveItem(0);
    });
}

});

手伝ってくれてありがとう ...

4

2 に答える 2

0

カルーセルの項目を埋めるコードをメイン コントローラーに入れました。

Ext.define('MY.controller.Main' , {
  extend: 'Ext.app.Controller',

    // define a reference to the mycarousel view
    refs: [
      {
        ref: 'mycarouselView',
        selector: '#mycarousel'
      } 
    ],

    // let the control call the init function of the carousel
    init: function() {
      this.control( {
        '#mycarousel': {
           initialize: 'initMycarousel'     
        }
      });   
    },

    // then I can access the carousel view and fill it ...
    initMycarousel: function() {
      var carousel = this.getMycarouselView();
      var store = Ext.getStore('MycarouselPhotos');

      store.clearFilter(true);
      store.filter('photoset', '72157631990018061' );
      store.load();       

      store.load( function(pictures , operation ) {
      var items = [];

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

        items.push({
          xtype: 'image',
          src: picture.data.photo_url
        });             
      });

      // fill items into carousel
      carousel.setItems(items);
      carousel.setActiveItem(0);
 });

}

于 2012-12-21T12:38:43.670 に答える
0

代わりにこれを試しましたか?

photosetcarousel.setItems(items);

または、カルーセルに photosetcarousel の ID を付けてから、次のことを試してください。

var photosetcarousel = Ext.getCmp('photosetcarousel');
photosetcarousel.setItems(items);

未検証...

彼の例も参照できます。

http://web.archive.org/web/20121109164506/http://edspencer.net/2012/02/building-a-data-driven-image-carousel-with-sencha-touch-2.html

于 2012-12-16T16:31:50.660 に答える