2012-09-28 104 views
0

我一直在這個工作了好幾天,但我有限的JS知識似乎傷害了我。動態傳送帶內容不顯示

我在ST2應用程序中創建了一個動態的Ext.Carousel組件,該組件基於Store文件的內容。

這一切工作正常,但我無論如何都會顯示代碼,所以沒有東西留下來的想象:

Ext.getStore('DeviceStore').load(
      function(i) { 


        Ext.each(i, function(i) { 
         if (i._data.name == 'Audio Ring') { 

          var carousel = Ext.ComponentManager.get('speakerCarousel'); 

          var items = []; 
          Ext.each(i.raw.speakers, function(speaker) { 

           items.push({ 
            sci: Ext.create('SmartCore.view.SpeakerCarouselItem', { 
             speakerId: speaker.speakerid, 
             speakerName: speaker.speakername, 
             speakerEnabled: speaker.speakerenabled 
            }) 
           }); 


          }); 
          carousel.setItems(items); 


         } 
        }); 
      }) 

現在,這增加了我的項目到轉盤的適當數量。它們顯示,但沒有內容我指定:

這是木馬本身:

Ext.define('SmartCore.view.SpeakerCarousel', { 
    extend: 'Ext.Carousel', 
    xtype: 'speakerCarousel', 
    config: { 
     id: 'speakerCarousel', 
     layout: 'fit', 
     listeners: { 
      activeitemchange: function(carousel, item) { 
       console.log(item); 

      } 
     } 


    } 
}); 

這是項目類,我想從存儲中的數據填充到:

Ext.define("SmartCore.view.SpeakerCarouselItem", { 
    extend: Ext.Panel, 

    xtype: 'speakerCarouselItem', 

    config: { 

     title:'SpeakerCarouselItem', 
     styleHtmlContent: true, 
     layout: 'fit' 




    }, 

    constructor : function(param) { 


     this.callParent(param); 
     this.add(
      { 
      layout: 'panel', 
      style: 'background-color: #759E60;', 

      html: 'hello' 

      } 
     ) 

    } 
}); 

同樣,項的右側的數字表示在轉盤(11),但內容是不可見的,也不是背景顏色改變。 當我檢查在瀏覽器中的console.log(項目),項目顯示爲傳送帶對象內部innerItems。

任何幫助非常感謝!

+0

沒人能幫忙嗎?我仍然堅持這個問題.. – Sticks

回答

0

嗯,我自己修復它,或者更好,我找到了一個解決方法,似乎是我想要的。

我最終一起拋棄構造函數。

相反,我重寫了'speakerName'鍵值對的apply方法。

從那裏,我可以使用:

this._items.items[0]._items.items[i].setWhatever(...)

設置的項目裏面的內容。

如果有人知道「真實」的方式來做到這一點,我仍然非常感謝輸入!