Чтобы зациклить массив с помощью XTemplate в sencha touch 2.1.0

Документация Ext.XTemplate< /а> говорит:

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

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

Я следую первому правилу и назначаю конфигурацию данных панели с массивом объектов, но он просто показывает пустое значение. Код выглядит следующим образом:

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

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

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


person gabriel aflext    schedule 09.09.2013    source источник


Ответы (1)


Да, <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]
]));
person Evan Trimboli    schedule 09.09.2013