2013-09-09 1 views
1

Ext.XTemplate Docs говорит:Для цикла массив с XTemplate в сенче контакте 2.1.0

ЛТФА тег и для оператора используется для обработки предоставленного объекта данных:

  • Если значение, указанным в for - это массив, он будет автоматически заполняться, повторяя блок шаблонов внутри тега tpl для каждого элемента массива.
  • Если for = "." указан, предоставлен объект данных.
  • При обработке массива специальная переменная {#} будет предоставлять текущий индекс массива + 1 (начинается с 1, а не 0).

Я следую за первое правила и назначить конфигурации данных панели с массивом объектов, но это только показывает код blank.The, как показано ниже:

    { 
       xtype : 'panel', 
       tpl : new Ext.XTemplate([ 
          '<tpl>', 
          '<div>', 
           '{index}', 
          '</div>', 
          '</tpl>' 
       ]), 
       data : [ 
         {index : '11'}, 
         {index : '12'}, 
         {index : '13'} 
       ] 
       } 

Так я следую второе правило и добавьте 'for="."' для '<tpl>', он работает! Итак, я хочу знать, действительно ли это означает, что вам нужно добавить 'for="."', если вы просто хотите скомпилировать массив с Ext.XTemplate?

Также, это действительно плохая практика использования заявления 'for="."'?

ответ

0

Да, <tpl for="."> означает перебор по «активному» объекту. Например, «активный» объект изменяется от внешнего массива во внутренний массив, потому что во время итерации мы указываем на внутренний массив:

var tpl = new Ext.XTemplate([ 
    '<tpl for=".">', // "." points to the outer array 
     '<tpl for=".">', // "." points to each inner array 
      '{.}', 
     '</tpl>', 
    '</tpl>' 
]); 

console.log(tpl.apply([ 
    [1, 2], 
    [3, 4] 
]));