Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   update panel как использовать цикл? (https://javascript.ru/forum/extjs/51172-update-panel-kak-ispolzovat-cikl.html)

treasury 27.10.2014 13:38

update panel как использовать цикл?
 
Имеем dataview, используем новый шаблон, получаем store, данные там уже присутствуют, вывожу в консоль, теперь для вывода данных в шаблоне применяю dataview update. Скажите пожалуйста как мне описать его для вывода данных из store в цикле? Ниже код:
var panelLand = Ext.getCmp('dataview');
        
var storeLand=Ext.StoreManager.get('Land');
        console.log(storeLand);
        console.log(storeLand.getAt(0).get('name'));
        console.log(storeLand.getAt(0).get('area'));
        console.log(storeLand.getAt(0).get('perimeter'));

        panelLand.tpl = new Ext.XTemplate(
            '<tpl for=".">',
            '<div class="x-dataview-item" role="option" tabindex="-1">',
            '<table class="tabview">',
            '   <tr name=\'land\'>',
            '       <td width=\'200px\'><input type="checkbox" enabled="enabled" value="open" name="comment_status" <tpl if="active">checked="checked"</tpl> />{area}{name}{perimeter}</td>',
            '       <td class="configure"></td>',
            '   </tr>    ',
            '       </table>',
            '</tpl>',
            '   ');


        panelLand.update({name:storeLand.getAt(0).get('name')});

Infarch 27.10.2014 16:54

А вы уверены что так стоит делать? Я бы создал отдельные компоненты, со своими темплейтами на все случаи жизни, и их бы отображал по необходимости.

treasury 27.10.2014 17:00

Цитата:

Сообщение от Infarch (Сообщение 337866)
А вы уверены что так стоит делать? Я бы создал отдельные компоненты, со своими темплейтами на все случаи жизни, и их бы отображал по необходимости.

Ну ок, возможно ваш вариант также будет верным. Если можно тогда детальнее? Т.е. мне нужно через hide() show() показывать и скрывать разные экземпляры dataview? Или все-таки в моем варианте есть возможность до конца реализовать что мне необходимо? Используя это panelLand.update({name:storeLand.getAt(0).get('nam e')}); мне вывелась запись в dataview, но как сделать вывод в цикле не приложу ума.

Infarch 27.10.2014 17:30

Или card layout, или уничтожать контент некоего холдера и вставлять другой. Все зависит от того что более правильно для вас. Например при частом переключении между вью - card layout однозначно лучше.

treasury 27.10.2014 17:43

Цитата:

Сообщение от Infarch (Сообщение 337875)
Или card layout, или уничтожать контент некоего холдера и вставлять другой. Все зависит от того что более правильно для вас. Например при частом переключении между вью - card layout однозначно лучше.

Можете показать пару строк кода? Как реализовывать?

Infarch 27.10.2014 18:37

Ну... как то так:

{ region: "center",
	reference: "widgetcontainer",
	layout: "card",
	items: [
		{ itemId: "processes",
			xtype: "settings-process-list",
			ui: "pm-panel-embedded"
		},
		{ itemId: "aors",
			xtype: "settings-aor-list",
			ui: "pm-panel-embedded"
		}
	]
}


Имеем card layout в определенном регионе. Когда нужно переключиться, активируем карту по айди:

onMenuClick: function(item){
	var
		me = this,
		itemId = item.getItemId()
		container = me.lookupReference("widgetcontainer");
	
	container.setActiveItem(itemId);
}


Часовой пояс GMT +3, время: 11:33.