1

Sencha Architect 2 で Sencha Touch (2.2) を使用する

ナビゲートするツリー構造があります。

ノードは要素であり、要素はフォルダーまたはリーフのいずれかです。

Ext.dataview.dataview (LIST) に要素を表示するには、ストア (storeID: 'elementstore') と Ext.dataview.component.Dataitem を使用します。

これは、最初に LIST を埋めるための私のコードであり、フォルダーを開くたびにツリーの奥に移動します。

初めてストアをいっぱいにして、イベントを無効にして update() が 2 回呼び出されないようにします。作成後すぐにこのビューに切り替えます。それはうまく機能し、望ましい結果を返します。私のリストには、フォルダとリーフの最初のレベルが表示されています。

これは、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 コントローラーにあるコードです。

実際には 1 レベル戻るのではなく、最上位レベルに戻ります。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 に設定しました。

すべてが機能しますが、特定の構造の問題を修正した理由について何も理解していません... remove() は正確に何をしているのですか???

4

2 に答える 2

5

Elementストアのプロパティを次のように設定します

destroyRemovedRecords : false

問題を解決しますが、まだ理由を説明できません。

于 2013-06-19T18:27:17.767 に答える