2016-03-16 8 views
6

Der Testfall in fiddle arbeitet mit autoLoad: true aber mit autoLoad: false (Linie 86) die Last() Funktion in Zeile 161 in der TreePanel genannt Before Ereignis die Daten nicht geladen werden ...TreeStor: unterschiedliches Verhalten beetween autoload Konfiguration und Last() Funktion

Für (nicht Baum) Panels habe ich immer autoLoad auf false gesetzt und laden Sie den Laden auf Render des GridPanel und es funktioniert perfekt. Ich mache es so, um zu verhindern, dass alle Läden zu Beginn geladen werden (und manchmal Filter eingestellt werden).
Das Ereignis beforeload des Geschäfts verhindert doppelte Belastung.

Wo ist meine Schuld für diesen TreeStore? Ich suche nach einer Lösung für lange Zeit ohne Ergebnis ...

+0

Ich habe auch die Frage im [Sencha Forum] gestellt (https://www.sencha.com/forum/showthread.php?309963-TreeStore-different-behaviour-between-autoLoad-configuration-and-load() (Funktion) – Michel

Antwort

1

Es gab ähnliche Probleme in Ext JS 4 hier erklärt ExtJS 4. Hidden treepanel with autoload false.

Was ich in Ihrer Geige tat ist, dass habe ich nur noch die folgende

autoLoad: false, 
    root:{ 
    //expanded: true, // optional 
    children: [] 
    } 

91 in Ihrem Speicher Konfiguration auszukleiden. Alles hat auf magische Weise funktioniert.

+0

'root: {expanded: true}' ist die gleiche nicht funktionierende Lösung als qmat ... Diese Einstellung setzt indirekt autoLoad auf true. – Michel

+0

@Michel es ist tatsächlich 'children: []' Eigenschaft, die zählt, "erweitert" könnte auch falsch sein. – nenadg

+0

@Michel hier arbeitet Geige https://fiddle.sencha.com/#fiddle/1873 (Ich habe eine Verschiebung auf store.load in 'ponderender') – nenadg

0

Ich denke, ich habe dein Problem gelöst.

Verwenden Sie die Root-Eigenschaft für Ihren TreeStore.

/* 
* Store 
*/ 
Ext.define('Chronos.store.Clockings', { 
    extend : 'Ext.data.TreeStore', 
    requires: [ 
     //'Chronos.store.Session' 
    ], 
    model  : 'Chronos.model.Presence', 
    autoLoad : false, //true, // false, 
    //autoSync : true, // DEBUG 
    sortOnLoad : false, 
    pageSize : 0, 
    remoteFilter: true, 

    root: { 
     id: 'id', 
     expanded: true 
    }, 

    listeners: { 
     load: function(treestore, records, success) { 
      console.log(Date(), 'clockings loaded: ', success, treestore); 
     }, 
     beforeload: function (treestore) {    
      if(treestore.isLoading()) return false;   
     } 
    } 
}); 

Hoffe, das ist, was Sie suchen!

+0

Leider nicht, weil 'Es ist wichtig zu beachten, dass Tree Stores laden unabhängig von AutoLoad Wert wenn Erweiterung auf True auf dem Stammknoten festgelegt ist. nach [der Dokumentation] (http://docs.sencha.com /extjs/5.1/5.1.1-apidocs/#!/api/Ext.data.TreeStore-cfg-autoLoad). Das bedeutet, dass Ihr Code autoLoad indirekt auf true setzt, und das ist nicht das, wonach ich suche. – Michel

Verwandte Themen