3

私は ext5 ツリーで多くの問題を抱えているので、ここに投稿して皆さんが気づいたことを確認し、これらの 5.0.0 バグを解決するのに役立つことを願っています...

に設定すると、TreeStore が 2 回読み込まれるように見えます。

autoload:true

. このため、ツリーパネルに表示されるノードが何らかの形で複製され、あらゆる種類の問題/エラーが発生します...

したがって、回避策を作成する際に、TreeStore を

autoload:false

ビューがレンダリングされた後、ストアを取得してロードしようとしました。[不合格]。TreeStore は 1 回だけロードされますが、ツリーは実際にはレンダリングされませんでした。繰り返しますが、ストアを自動ロードしないように設定し、これをコントローラーにドロップする以外は何も変更されていません。

var s = Ext.getStore('myStore');
s.load();

木は塗装されません...

そのため、回避策 2 (AWFUL ソリューション) - ストアを自動ロード (2 つのプロキシ呼び出しを使用) させますが、ツリーがレンダリングされた後、すべてのデータを削除してから、手動でストアを再度ロードします。

(in the store)
...
autoload: true
...

(in the controller)
...
var s = Ext.getStore('myStore');
s.removeAll();
s.load();
...

シャザム!ツリーは最後にロードされ、データは 1 回だけ表示されます。重複なし!!

ただし、現在はすべての展開と折りたたみが壊れています。イベントは発生せず、ノードの展開と折りたたみは機能しません..折りたたみ/展開が既に壊れている可能性がありますか?

autoload:true を設定し、コントローラー コードを取り出します。

TreeStore は 2 回ロードされます。ツリーパネルでノードを複製します。展開/折りたたみが適切に機能します。

4

3 に答える 3

3

senchaがこの問題を「修正」している間、私は回避策を見つけました...

私の Sencha バグレポート

これは、すべてのストアに導入することを決定したばかりの回避策です。したがって、このようなことは二度と起こりません。

...
listeners: {        
     beforeload: function (store, operation, eOpts) {            
          if(store.isLoading()) return false;        
     }    
}
...

これを追加することで、ストアが「二重ロード」することはありません。この種の回避策を入れなければならないのはちょっとばかげています...

がんばれ!

于 2014-08-01T16:06:04.577 に答える
0
var MenuStore = new Ext.data.TreeStore({
    storeId: 'MenuStore',
    model: 'BaseMenu',
    autoLoad: false,
    proxy: {
          type: 'ajax',
          url: '/menu.json'
    },
    root: {
        text: 'Menu',
        id: 'src',
        expanded: true,
        loaded:true
    }
});

設定が読み込まれました: true 私の問題を解決します。

これは私のために働きます。

于 2015-12-29T14:33:14.457 に答える