0

jQuery FileTreeを使用しています。javascript ajax (jQuery ではなく古い学校の javascript xmlhttp 要求) を介してファイルをアップロードした後、次のコードを使用して fileTree を呼び出します。

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

...これにより、クリックできる素敵なグラフィック ファイル ツリーが生成されます (path変数は新しいフォルダーで、URI セグメント変数として使用されます。サーバー側コネクタの jQueryFileTree.php コードを public にコピーしただけです)。 CodeIgniter コントローラ クラスの関数. これは追加情報であり、問​​題とは何の関係もないと思いますが、参考までに)。

しかし、何らかの理由で、(ページをリロードすることなく) 新しいファイルをアップロードして 2 回目の呼び出しを行うと、ファイル ツリーが更新または更新されません。別のフォルダーに新しいファイルをアップロードするときに、ツリー構造を更新したいと考えています。

ローダーgifを使用して、 #jstree 要素自体をクリアしようとしました:

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

...または単にhtmlをクリアするだけでも:

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

「destroy」や「refresh」など、他のウィジェット タイプのライブラリの一部であるコマンドを試しました。

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

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

これらは何もしないか、js エラーを返します。

4

1 に答える 1

1

v2.1.4 (467904a3ab5c13df094ffe01ddb0d0fea24c5d6a) の生のソースをダウンロードし、203 行目を次のように変更しました。

if (!data) {

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

ここで、fileTree をリロードする場合は、arguments 配列に「reload: true」を渡すだけです。

于 2016-11-15T15:48:14.873 に答える