1

我有 2 家商店。排序存储和工作存储。

这是模型中我的 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 字段:

         ['name', 'value']

我想根据 sortstore 中的项目在列表中显示来自 workstore 的数据。如果排序存储有域名和对象 ID。该列表应仅填充工作存储中的那些值。商店正在通过 web 服务调用动态加载。

       {
            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。任何帮助表示赞赏。

4

2 回答 2

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/>';
            }
  }
于 2012-06-28T09:28:46.000 回答
0

不确定这是否是最好的方法,但我过去实现它的方法是为我的应用程序保留模板 ID 的 JSON(使用区分字段,例如“tpl_”+field)和模板内容,并在启动时将其加载到变量中(tpls)。加载后,我可以像这样从任何地方引用它:

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

然后将它传递给这样的列表:

{
xtype: 'list',
itemTpl : styleTemplate,
store : listStore,
id : 'ilid',
layout : 'fit'
}
于 2012-11-29T10:38:00.513 回答