2016-04-08 8 views
0

ich jQuery FileTree bin mit. Nach einer Datei-Upload über Javascript-Ajax (alte Schule Javascript xmlhttp Anfrage, nicht jQuery), rufe ich den filetree mit dem folgenden Code:jQueryFileTree Wie Instanz zu löschen, Reinstanziierung neue Instanz oder aktualisieren

$('#jstree').fileTree({ 
      script: '/ajax/file_tree2/' + path, 
      multiFolder: true, 
      expandSpeed: 250, 
      collapseSpeed: 250 
     }); 

..., die einen schönen Grafik-Dateibaum erzeugt, die ich auf um in (der path Variable ist der neue Ordner als URI Segment Variable verwendet wurde, und ich habe einfach den serverseitigen Anschluss jQueryFileTree.php Code in eine öffentliche Funktion in einer CodeIgniter Controller-Klasse kopiert. Dies ist zusätzliche Informationen, die ich don‘ t denken hat etwas mit dem Problem zu tun, nur FYI).

Aber aus irgendeinem Grund, wenn ich einen zweiten Anruf tätigen, indem Sie eine neue Datei hochzuladen (ohne die Seite neu zu laden), der Dateibaum nicht oder aktualisieren nicht aktualisiert. Ich möchte die Baumstruktur aktualisieren, wenn ich neue Dateien für verschiedene Ordner hochlade.

Ich habe versucht, sich das #jstree Element zu löschen, einen Lade gif mit:

$('#jstree').html('<img src=\"'+$("#base_url").html()+'/assets_/images/loading/loading36.gif\" />'); 

... oder sogar Clearing nur die html:

$('#jstree').html(''); 

Ich habe versucht, Befehle dass ist Teil von anderen Widget-Typ-Bibliotheken, wie ‚zerstören‘ oder ‚Refresh‘:

$('#jstree').fileTree.destroy(); 

$('#jstree').fileTree({ 
      refresh: true, 
      script: '/ajax/file_tree2/' + path, 
      multiFolder: true, 
      expandSpeed: 250, 
      collapseSpeed: 250 
     }); 

nichts Dieser entweder tun oder aj zurückkehren s Fehler.

Antwort

1

ich die rohe Quelle von v2.1.4 heruntergeladen (467904a3ab5c13df094ffe01ddb0d0fea24c5d6a) und modifizierte Leitung 203 aus:

if (!data) { 

zu

if (!data || (Object.prototype.toString.call(args) === '[object Object]' && args.reload)) { 

Nun, wenn ich die filetree neu laden wollen, gebe ich nur "reload: true" im Argumentarray.

+0

Ich bin immer noch auf diesem Projekt, so lassen Sie mich diese Antwort testen, bevor sie als gewählte Antwort markieren. – TARKUS

+0

Hoffentlich wird es dir helfen. Ich bin kein JS-Guru, also könnte es einen besseren Weg geben, dies zu tun, aber für mich hat es seinen Zweck erfüllt :) – ixM

Verwandte Themen