2012-09-28 73 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(...)

设置的项目里面的内容。

如果有人知道“真实”的方式来做到这一点,我仍然非常感谢输入!