使用dynatree.js延迟加载,如何删除空子节点(分支中的每个最后一个节点都为null)

时间:2014-03-22 07:25:35

标签: jquery json node.js jquery-dynatree

我是新的dynatree用法。除了将每个分支的最后一个子节点显示为null之外,所有内容都很酷且很懒惰。

$("#tree").dynatree({
    title: "Lazy loading sample",
    fx: { height: "toggle", duration: 200 },
    autoFocus: false,

    initAjax: {
        url: "/get_top_level_nodes",
        data: { mode: "funnyMode" }
    },

    onActivate: function(node) {
        $("#echoActive").text("" + node + " (" + node.getKeyPath()+ ")");
    },

    onLazyRead: function(node){
        node.appendAjax({
            url: "/get_children",
            data: { key: node.data.key,mode: "funnyMode"}
            });
    }
});

如果json结果不为null,如下所示。它的工作正常。杰森:[ { "title": "Node1", "isLazy": true, "key": "BC13B21636CD6D5C"}, { "title": "Node1", "isLazy": true, "key": "BC13B21636CD6D5C"}]

如果ajax结果为空[],我将返回null。然而,我在该分支中看到一个null的子节点。我怎么能删除这个?如果没有孩子,我不想显示null或其他任何内容。

3 个答案:

答案 0 :(得分:1)

  

如果ajax结果为空[],则返回null。

您应该返回[]; - )

答案 1 :(得分:0)

如果结果是[]数组而不是[{" title":" Node1","是懒惰":是真的,"键&#34 ;:" BC13B21636CD6D5C"},{" title":" Node1","懒惰":真实,"关键&#34 ;:" BC13B21636CD6D5C"}],

如果父母没有孩子,则返回nil。我在控制器中有格式方法,我用它将子数组格式化为子格式,

答案 2 :(得分:0)

3月的回答是正确的。 这是我用于延迟加载的树的代码。 如果没有要返回的子节点,我会回显一个空的JSON对象" []":

$res = mysql_query($req) or die(mysql_error());
$i=0;
while($cat = mysql_fetch_assoc($res)) {
  $cats[] = $cat;
  $i = 1;
}
if ($i)
  echo json_encode($cats);
else
  echo "[]";