Sencha Touch:XTemplate在DataView中不可见

时间:2012-07-24 13:06:45

标签: templates touch extjs dataview

我是所有Sencha Touch的新手,但直到现在我对它的能力非常热情。有一个问题,我莫名其妙无法解决。

我想使用Tpl(XTemplate)作为日历视图。我们的想法是为每个约会创建一个div元素,我可以在容器中放置它们来布局它们。不知怎的,我无法让dataview工作。

我已经将我的代码剥离到最低限度:一个包含DataView的面板。当我使用itemTpl时,一切正常。但是当我使用tpl(有或没有XTemplate)时,我什么都看不到。我检查了它是否只是显示器故障(从模板中搜索了XXX),但事实并非如此。

这是我的代码:

Ext.define('InfoApp.view.CalendarDay', {
extend: 'Ext.Panel',
xtype: 'calendarday',
requires: [ 'InfoApp.store.sAppointments'],
config: {
    title: 'Dag',
    layout: 'fit',
        items: [
                {
                    xtype: 'dataview',
                    store: 'appointmentStore',

                    //itemTpl: [ 'XXX {day} {course}' ] --> Works
                    tpl: new Ext.XTemplate('<tpl for=".">XXX {day} {course}</tpl>')--> Doesn't Work... 
                }        
        ]
}
});

提前感谢任何建议或改进!

2 个答案:

答案 0 :(得分:0)

假设ST2而不是ST1

来自http://docs.sencha.com/touch/2-0/#!/api/Ext.Component-cfg-tpl以及文档中tpl:config的注释,使用远程商店时会出现错误。即使你的商店有数据。 tpl:显然只有你的数据在数据中被硬编码才能正常工作:[]

你可以使用itemTpl:new XTemplate()或itemTpl:XTemplate.from('someid'),或者你可以推迟指定直到之后,抓住你的数据视图并转到dv.setItemTpl(new XTemplate())等。 / p>

答案 1 :(得分:0)

坦克@brink为您的答案。

我花了几天时间,但这对我有用:

  // Load the store
  var store = Ext.getStore('appointmentStore');

  // Get the current range of the store
  var data = store.getRange();

  // Create a custom template
  var tpl = new Ext.XTemplate(<tpl for=".">{day} {course}</tpl>);

  // Loop through the data array 
  var showData = array(); 
  for(var i=0;i<data.length;i++){
      showData.push(data[i].data); 
  }

  // Get the panel by ID and push the html template
  var panel = Ext.getCmp('appointmentspanel');
  panel.updateHtml(tpl.applyTemplate(showData));