Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.04.2013, 09:43
Аспирант
Отправить личное сообщение для constantant Посмотреть профиль Найти все сообщения от constantant
 
Регистрация: 30.07.2008
Сообщений: 87

Refresh Treepanel
Есть TreeStore для дерева.
В нём описаны Fields.
У поля, которое displayField, есть convert.
convert использует внешние данные для преобразования.

Вопрос: как обновить дерево что бы Store остался прежним (то есть не долбился на сервак за обновлением), а только лишь сработал convert с новыми данными?
Ответить с цитированием
  #2 (permalink)  
Старый 16.04.2013, 10:48
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

листинг бы глянуть что вы написали..
попробуйте метод store.commitChanges();
вот ссылка на доки:
http://docs.sencha.com/extjs/4.1.3/#...-commitChanges
Ответить с цитированием
  #3 (permalink)  
Старый 16.04.2013, 12:59
Аспирант
Отправить личное сообщение для constantant Посмотреть профиль Найти все сообщения от constantant
 
Регистрация: 30.07.2008
Сообщений: 87

Сообщение от skrudjmakdak
попробуйте метод store.commitChanges();
да, я его уже пробовал. но дело в том, что он применяется к изменённым record'ам, а у меня как раз смысл в том что store по сути не изменяется, требуется только заново применить метод convert...
Ответить с цитированием
  #4 (permalink)  
Старый 16.04.2013, 14:45
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

вот кусок кода. здесь описан сторе

var peremen = 'my Prefix';
var store = undefined;
Ext.onReady(function(){
//------------------
store = Ext.create('Ext.data.Store',
    {
    fields: [
	'id', 
	'name',
	{
	name: 'firstName',
	convert: function(value, record)
	    {
	    return record.get('name') + peremen;
	    }
        }],
    idProperty: 'id',
    remoteSort: true,
    proxy:
	{
	type: 'ajax',
	url: '/getStore',
	actionMethods:
	    {
	    read: 'POST'
	    },
	reader:
	    {
	    root: 'data',
	    totalProperty: 'totalCount'
	    }
	},
    autoLoad: true,
    listeners:
	{
	load:
	    {
	    fn: function()
		{
		setTimeout(function()
		    {
		    if (store.count() > 0)//если записи есть
			console.log(store.getAt(0).data); //выводим объектом первую запись
		    }, 1000);
		}
	    }
	}
    });
//------------------
});


теперь посмотрите на функцию, которая выводит в консоль данные при загрузки объекта. смотрим в консоль.. и мы видим что 'firstName' реально существует. и если нужно данные обновить, то тут есть вариант перебрать всю стору циклом (например так):

for(var i = 0; i < store.count(); i++)
    store.getAt(i).set('firstName', 'newValue');

а в конце сделать commitChange();
может и есть метод который будет передергивать конверт, но я пока его не нашел))
Ответить с цитированием
  #5 (permalink)  
Старый 16.04.2013, 15:44
Аспирант
Отправить личное сообщение для constantant Посмотреть профиль Найти все сообщения от constantant
 
Регистрация: 30.07.2008
Сообщений: 87

Сообщение от skrudjmakdak
перебрать всю стору циклом
ага, я так тоже сделал

Сообщение от skrudjmakdak
может и есть метод который будет передергивать конверт, но я пока его не нашел))
да в том-то и засада
буду капать дальше, Спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
заменить refresh на reload optik77 Общие вопросы Javascript 3 22.09.2011 22:40
refresh страницы TAILER Events/DOM/Window 2 24.08.2011 15:37
Загрузка в TreePanel posta ExtJS 0 24.06.2011 21:23
Как узнать текущее значение TreePanel? astral_sight ExtJS 3 23.07.2010 13:03
Internet Explorer refresh ushlepok Internet Explorer 2 31.03.2010 17:38