2013-06-17 1 views
1

Использования Сенча Прикосновения (2.2) с Сенча Architect 2магазинов и список DataView - Невозможно добавить элемент - IndexOf нуля

У меня есть древовидная структура, в которой я перемещаться.

Узлы Элементы и элементы могут быть либо папкой, либо листом.

Чтобы отобразить элементы моего Ext.dataview.dataview (LIST), я использую хранилище (storeID: 'elementstore') и Ext.dataview.component.Dataitem.

Вот мой код, чтобы заполнить СПИСОК вначале, и каждый раз мы открываем папку, чтобы идти глубже в дерево.

Заполнение магазина в первый раз, отключить событие так обновление() не вызывается дважды есть я буду переключение с этой точкой зрения сразу после создания этого. Он хорошо работает и возвращает желаемый результат. У меня есть в моем СПИСОК, на котором отображается первый уровень папок и листов.

Это вызывается непосредственно в списке с onItemTap Event

var EStore = Ext.getStore('elementstore'); 
EStore.removeAll(); 
EStore.suspendEvents(); 
EStore.add(record.get('arrElement')); 
EStore.resumeEvents(true); 

Опорожнение и пополнением магазин с достигнутым уровнем дерева.

Это вызывается непосредственно в списке с onItemTap Event

if(record.get('strUIType') === 'folder') 
    { 
     INDEX_STACK.push(index); 
     store = Ext.getStore('elementstore'); 
     store.removeAll(); 
     store.add(record.get('arrElement')); 
    } 

Что плохого в том, когда я пытаюсь идти назад, идя в моем дереве. Здесь - код, который находится в контроллере Sencha.

Это на самом деле не возвращается на один уровень, а обратно на верхнем уровне. ACTIVE_PROJECT - это индекс активного дерева, все из которых находятся в моем проектном магазине.
.

var popped =INDEX_STACK.pop(); 
var tab = tabpanel.getParent().getParent().getParent().getComponent('projects_Tab'); 

if(popped === undefined) 
{ 
    tab.setActiveItem(0); 
} 
else 
{ 
    var eStore = Ext.getStore('elementstore'); 
    eStore.removeAll(); 

    //Crashes! 
    eStore.add(Ext.getStore('projectstore').getAt(ACTIVE_PROJECT).get('arrElement')); 
} 

ли вы видите eStore.add (....) это Грохот линия, на которой я получаю следующее сообщение об ошибке:

Uncaught TypeError: Cannot call method 'indexOf' of null sencha-touch-all.js:21 
Ext.Array.contains.e 
Ext.Array.include 
Ext.define.join 
Ext.define.insert 
Ext.define.add 
Ext.define.onMain_TabsTap (----Yep this line is my code the rest is sencha touch... 
Ext.define.doFire 

Единственное, я добиваюсь, чтобы добавить к В этом контроллере хранится пустой Ext.create (CarboZero.model.Element). Я ничего не могу получить от своего активного проекта.

Есть что-то неправильно с удалением и чтением? Является ли мой магазин поврежденным от того, как я его использую? Я работал над этим в течение 2 дней, не получая ничего, чтобы правильно работать ...

EDIT К ВОПРОСУ

Я просто установить в моем элементе сохранения destroyRemovedRecords ЛОЖЬ.

Все работает, но я не понимаю НИКОГДА, почему он исправил проблему с моей конкретной структурой ... Что это за удаление(), выполняющее именно ???Свойство

ответ

5

Set Элемент Стор к следующему

destroyRemovedRecords : false 

Решить эту проблему, до сих пор не может объяснить, почему.

+1

Спасибо, что выставили этот вопрос. Как и во всех ошибках Sencha, найти решение для затенения мусора, которое просто кажется случайным образом происходить в рамках, действительно сложно. Это помогло мне решить ту же проблему. –

+0

Взгляните на мой профиль, он полон этих (стажировка на сенча, и я никогда не делал этого) – Fawar

+1

Кажется, тоже нужно работать в ST2.3.1. Не имеет никакого смысла, хотя. – Flo

0

У меня была та же проблема. В моем случае кеширование стало полным. На моделях листа вы можете установить useCache: false, чтобы предотвратить кэширование данных. Это исправило мою проблему.

Смежные вопросы