Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Как получить значения вышестоящих элементов дерева TreeStore ? (https://javascript.ru/forum/extjs/30313-kak-poluchit-znacheniya-vyshestoyashhikh-ehlementov-dereva-treestore.html)

Allan Stark 31.07.2012 12:58

Как получить значения вышестоящих элементов дерева TreeStore ?
 
ExtJS 4, treepanel, данные грузятся через сторедж из json файла и успешно отображаются.

Есть метод record.get('text'), с его помощью можно получить скажем при клике мышью на элементе дерева значение элемента (атрибут text ноды).

Но как получить значения вышестоящих элементов ?

Пример, есть дерево:

1
...2
......3

Как при щелчке на конечном элементе дерева (3) получить значение элементов (2) и (1) ?

Allan Stark 31.07.2012 16:48

Путем экспериментов разобрался самостоятельно.

1. Есть встроенные функции модели и нодинтерфейса, позволяющие получить значение любого атрибута текущего элемента либо пути:

listeners: {
  itemclick: function(view, record, item, index, e, obj) {
    console.log(record.get('text'));
    console.log(record.getPath('text'));
    console.log(getDepth('text'));
  }
}


2. Стандартный json файл можно расширять с помощью полей модели:

Ext.define('ECS2.model.model_treestore_invoices', {
    extend: 'Ext.data.Model',
	fields: [
		{name: 'text', type: 'string'}, // указывать обязательно для визуального вывода в дерево
		{name: 'invoice_date', type: 'date'},
		{name: 'invoice_number', type: 'string'},
		{name: 'invoice_item', type: 'string'}
	]
});


Затем эти скрытые поля можно использовать в логике приложения:

...
console.log(record.get('invoice_item'));
...


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