商店和数据视图列表 - 无法添加元素 - IndexOf为null

时间:2013-06-17 13:03:52

标签: extjs sencha-touch sencha-touch-2 sencha-architect

将Sencha Touch(2.2)与Sencha Architect 2一起使用

我有一个树形结构,我在其中导航。

节点是元素,元素可以是文件夹或叶子。

要在Ext.dataview.dataview(LIST)上显示元素,我使用商店(storeID:'elementstore')和Ext.dataview.component.Dataitem。

这是我的代码,首先填写LIST,每次我们打开一个文件夹深入树中。

  

首次填充商店,禁用事件,因此不更新()   两次调用后我将立即切换到此视图   创造它。它运作良好,并回馈所需的结果。我有   在我的列表中显示了第一级文件夹和叶子。

     

使用onItemTap事件直接在列表中触发

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

使用达到的树级别清空和重新填充商店。

     

使用onItemTap事件直接在LIST中触发

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天而没有得到任何正常工作......

编辑问题

我只是在我的Element存储区中将destroyRemovedRecords设置为FALSE。

一切正常,但我不明白为什么用特定的结构纠正了问题...什么是删除()正在做什么???

2 个答案:

答案 0 :(得分:5)

将Element store的属性设置为以下

destroyRemovedRecords : false

解决问题,仍然无法解释原因。

答案 1 :(得分:0)

我有同样的问题。就我而言,缓存变得充实。在叶模型上,您可以设置useCache: false以防止数据被缓存。这解决了我的问题。