2016-06-11 12 views
0

fancytree Ordner sind nie zusammengebrochen. Alle Kinder und Eltern werden ohne korrekte Verschachtelungsstruktur angezeigt.Ordner fancytree nie zusammenbrechen

Wenn ich genau die gleichen Daten kopiere, die in einer Textdatenquelle funktionieren, werden die Ordner von einem web2py (python) -Controller nicht zusammenfallen, sondern nur permanent erweitert angezeigt. Keine Konsolenfehler im Browser.

Originaldaten, die perfekt in Textdatei

FancyTree kopiert Daten aus Python contoller wie diese

json_list = [{ 
    "alexLink": "http://example.com/", 
    "kind": "tasks#task", 
    "id": "MTYwNzEzNjc2OTEyMDI1MzcwNzM6ODUwNjk4NTgzOjExMTkyODk2MjA", 
    "etag": "\"4qyCALf1j510T_-I20NAMbUHF2k/LTEzNTgzMTMzODg\"", 
    "title": "Task 01", 
    "updated": "2015-04-23T19:25:44.000Z", 
    "selfLink": "", 
    "position": "00000000002147483647", 
    "status": "needsAction" 
}] 

I umwandeln zu json funktioniert: json_list = json.dumps(json_list)

Dann als Quelle verwenden:

// Initialize Fancytree 
$("#alexTree").fancytree({ 
    checkbox: true, 
    selectMode: 3, 
    source: {{=XML(json_list)}}, 
    postProcess: function(event, data){ 
     data.result = convertData(data.response); 
    }, 
    select: function(event, data) { 
     window.open(data.node.data.alexLink, "_blank"); 

Die Daten sehen genauso aus wie in der Textdatei sourc e. Was könnte dazu führen, dass die Ordner keinen Vertrag mit Kindern unter sich eingehen?

Antwort

0

Ich kann keinen offensichtlichen Grund sehen, warum Ihre Probe nicht funktioniert (ich nehme an, Persistenzverlängerung ist aus?). Außer vielleicht für {{=XML(json_list)}}, das kann etwas unerwartetes tun. Ich denke, eine debugable Demo ist erforderlich, um herauszufinden.

Wie auch immer, ist Ihre Probe dieses:

  1. Baumdaten in einer nativen generieren (none-Fancytree) Format
  2. eine HTML-Seite mit einem eingebetteten <script>-Tag generieren, die diese Daten wiederum als String eingebettet ist
  3. auf Seite Last der Baum mit nativen Daten und Nachbearbeitung erstellt erfolgt clientseitige

Fancytree wurde mit diesem Muster im Auge (unter anderem e):

  1. Haben Sie eine statische Seite mit einem leeren <div id="tree"> Elemente und umfasst einige JavaScript
  2. Auf Seite Liest den Baum initialisieren und eine Ajax-URL für source passieren.
    Dies zeigt sofort die Seite für Ihre Benutzer an, während das Laden verzögert ist (mit einem sich drehenden Symbol)
  3. Sobald die Daten eintreffen, wird der Baum aktualisiert.
    (Sie könnten auch erwägen die Umwandlung Server-Seite zu tun und gültige Fancytree-kompatibele Daten senden.)

Dies würde wahrscheinlich liefert eine glattere Erfahrung Benutzer. Es würde auch ermöglichen, Baumdaten zu aktualisieren, ohne die Seite neu zu laden, indem tree.reload() aufgerufen wird.

+0

Sie sind Vorschlag arbeitete Martin. Danke var tree_url = "{{= URL (c = 'Standard/view_tree.json', vars = dict (spezifischeTaxonomyFK = specificTaxonomyFK))}}"; Quelle: {url: tree_url}, view_tree.json enthält eine Include der Daten –