Dynatree init来自自定义json数据

时间:2013-12-13 17:22:25

标签: dynatree jquery-dynatree

网站上有一个关于如何从自定义数据构建子节点的示例:

$("#tree").dynatree({
    […]
    onLazyRead: function(node){
        $.ajax({
            url: […],
            success: function(data, textStatus){
                // In this sample we assume that the server returns JSON like
                // { "status": "...", "result": [ {...}, {...}, ...]}
                if(data.status == "ok"){
                    // Convert the response to a native Dynatree JavaScipt object.
                    var list = data.result;
                    res = [];
                    for(var i=0, l=list.length; i<l; i++){
                        var e = list[i];
                        res.push({title: "" + i + ": " + e.fcurr + "-" + e.tcurr + ":" + e.ukurs,
                            icon: false});
                    }
                    // PWS status OK
                    node.setLazyNodeStatus(DTNodeStatus_Ok);
                    node.addChild(res);
                }else{
                    // Server returned an error condition: set node status accordingly
                    node.setLazyNodeStatus(DTNodeStatus_Error, {
                        tooltip: data.faultDetails,
                        info: data.faultString
                    });
                }
            }
        });
    […]
});

但是没有提到如何为树的初始化做这件事。我尝试了以下方法:

        initAjax: {
                type: "POST",
                url: "/doSomething",
                data: ...
                contentType: "application/json; charset=utf-8"
                success: function(data, textStatus){
                // In this sample we assume that the server returns JSON like
                // { "status": "...", "result": [ {...}, {...}, ...]}
                if(data.status == "ok"){
                    // Convert the response to a native Dynatree JavaScipt object.
                    var list = data.result;
                    res = [];
                    for(var i=0, l=list.length; i<l; i++){
                        var e = list[i];
                        res.push({title: "" + i + ": " + e.fcurr + "-" + e.tcurr + ":" + e.ukurs,
                            icon: false});
                    }
                    // PWS status OK
                    node.setLazyNodeStatus(DTNodeStatus_Ok);
                    node.addChild(res);
                }else{
                    // Server returned an error condition: set node status accordingly
                    node.setLazyNodeStatus(DTNodeStatus_Error, {
                        tooltip: data.faultDetails,
                        info: data.faultString
                    });
                }
            }
        },

但是我得到一个错误,说成功不起作用并使用其他方法,但是没有关于如何使用其他方法的文档?有人可以帮我从这里出去吗?我尝试使用dataFilter过滤掉我正在返回的json字符串,但这不起作用;我尝试使用onPostInit和postProcess,但由于没有文档,因此不知道该怎么做:重新格式化后我是否返回数据字符串,是否返回数据的json版本?我只做数据=格式(数据)?

非常感谢任何帮助。

我将拥有大量的状态代码,需要根据代码执行不同的操作;例如,如果我有代码1,这意味着我需要更改节点的类以具有红色文本;或者,如果我返回代码2,则表示存在内部错误,我需要将其添加到节点文本中;等

0 个答案:

没有答案