2012-06-13 37 views
1

我有2個商店。 SortStore和WorkStore。如何根據sencha touch中某些其他商店中的物品動態設置itemTpl?

這是在模型中我WorkStore領域:

  ['name', 'value'] 

我想根據該列表中的項目顯示從workstore數據:

  {name: 'domainName',type:'string',mapping:'DomainName'}, 
      {name: 'objectId',type:'string',mapping:'ObjectID'}, 
      {name: 'serverName',type:'string',mapping:'ServerName'}, 
      {name: 'sourceWorkset',type:'string',mapping:'SourceWorkset'}, 
      {name: 'sourceWorkstep',type:'string',mapping:'SourceWorkstep'}, 

這是在模型中我SortStore領域在整理。如果排序存儲具有域名和對象ID。該列表應該僅填充來自工作庫的那些值。商店正在通過webservice調用動態加載。

 { 
      xtype:'list', 
      id:'workitemlist', 
      // store:'WorkitemStore', 
      itemTpl:'<table><tr><td valign="top"><img src="{workitemImage}" width=20px height=22px />' + 
       '&nbsp;&nbsp;</td><td><span><b>{workitemName}</b></span> <br/>' + 
       '<span class="label">Object Id:</span> {objectId} <br /><span class="label">' + 
       'Source Workstep: </span>{sourceWorkstep}</td> </tr></table>' 


     } 

而不是在itemTpl中打印所有這些,我只需要在sortstore中存在的那些來填充。如何根據其他商店中的商品動態設置此itemTpl。任何幫助表示讚賞。

回答

1

我們可以動態設置itemTpl這樣:

var template = '<table><tr><td valign="top"><img src="{Image}"' + 
     ' width=20px height=22px />' + 
     '&nbsp;&nbsp;</td><td><span><b>{Name}</b></span> <br/>'; 
    var myStore = Ext.getStore('RealStore'); 
    if (myStore != null) { 
     myStore.each(function (record) { 
      if (record.get('field')) { 
       template += '<span class="label">Domain Name:</span>' + 
        ' {field} <br/>'; 
      } 
    } 
0

不知道這是最好的方式,但我已經在過去實施的方式是保持templateId的JSON(使用差異化的領域如「太平人壽_」 +字段)&我的應用程序的templateContent並在啓動時將其加載到變量(tpls)中。一旦它被裝載我可以從任何地方像這樣的參考吧:

var styleTemplate = eval('tpls.tpl_' + rec.field); 

,然後將它傳遞給列出這樣的:

{ 
xtype: 'list', 
itemTpl : styleTemplate, 
store : listStore, 
id : 'ilid', 
layout : 'fit' 
} 
相關問題