Как динамически установить itemTpl на основе предметов в каком-то другом магазине в сенча-тач?

У меня 2 магазина. SortStore и WorkStore.

Это мои поля 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']

Я хочу отображать данные из рабочего хранилища в списке на основе элементов в хранилище сортировки. если хранилище сортировки имеет доменное имя и идентификатор объекта. Список должен содержать только те значения из рабочего хранилища. Магазины динамически загружаются вызовом веб-сервиса.

       {
            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 на основе элементов в другом магазине. Любая помощь приветствуется.


person Akshatha    schedule 13.06.2012    source источник


Ответы (2)


Мы можем динамически установить 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/>';
            }
  }
person Akshatha    schedule 28.06.2012

Не уверен, что это лучший способ, но способ, которым я реализовал его в прошлом, заключался в том, чтобы сохранить JSON для templateId (используя дифференцирующее поле, например, «tpl_» + поле) и templateContent для моего приложения и загрузить его при запуске в переменной (tpls). Как только он загружен, я могу ссылаться на него из любого места следующим образом:

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

а затем передать его в список следующим образом:

{
xtype: 'list',
itemTpl : styleTemplate,
store : listStore,
id : 'ilid',
layout : 'fit'
}
person ThinkFloyd    schedule 29.11.2012