1

#TreeDiv で openTemplate 関数を使用して dynatree ツリービューをレンダリングしています。ダイナツリーの特定のテンプレートのすべてのユニットをロードする前に、#TreeDiv を空にするかクリアして、既存のツリーを削除します。これは初めて機能します。

#TreeDiv で別のテンプレートの他のユニットを読み込もうとすると、ユニット データが表示されません。div は空です。最初にユニット ツリーを作成したときと同じようにコードが正常に実行されるため、何らかの方法で #TreeDiv が破損しました。違いは、2 回目に .empty() を実行したときに、既にツリーが存在することです。

私は何を間違っていますか?

function openTemplate(dlg, form) {
        $.ajax({
            url: $(form).attr('action'),
            type: 'POST',                     
            data: form.serialize(),
            success: function (response) {          
                if (response.success) {
                    dlg.dialog("close");                
                   $('#TreeDiv').empty();         
                   loadUnits(response.data);                    
                }
                else {
                    // Reload the dialog with the form to show model/validation errors 
                    dlg.html(response);
                }
            }
        });
    }

 function loadUnits(data) {       
        $('#TreeDiv').dynatree({
            onActivate: function (node) {
                getTestSteps(node.data.key);
            },            
            onLazyRead: function (node) {           
                node.appendAjax({
                    url: '@Url.Action("GetChildrenUnits","Unit")',
                    data: {"unitId": node.data.key, "templateId": 1 }
                });
            },
            children: data
        });
    }
4

1 に答える 1

1

loadUnitsの呼び出しの前にempty()の呼び出しが完了していないようです。

empty()呼び出しをuntilTimeoutでラップすることができます。または、tryまたはifステートメントにカプセル化することもできます。IE、空が終了した場合は、loadUnitsを呼び出します

于 2012-06-04T17:45:20.387 に答える