2010-03-11 17 views
8

Estoy tratando de usar este plugin jQuery (jsTree) en uno de mis proyectos.
Todos los demás que he encontrado no han sido actualizados recientemente.
De todos modos, estoy usando este complemento para cargar una estructura de carpetas, pero me gustaría hacer esta operación asincrónica. Los ejemplos que he encontrado en su sitio (llamados asincrónicos) son ridículos. He intentado verificar en Internet, pero parece que la mayoría de las personas carga todo el árbol. Me gustaría cargar una rama en cada clic de nodo. Estoy usando JSON.jsTree: async cargando

Gracias de antemano

+0

@vandalo - Lo mejor que me ayuda es un ejemplo decentemente prolijo, intenté explicarlo a continuación ... comente las preguntas que surjan y trataré de responderlas. –

Respuesta

8

estoy usando esto con jsTree en jQuery 1.4 por el momento, he aquí un ejemplo, es muy sin comprimir para que sea un poco más claro:

$("#QuickNav").tree({ 
    data: { 
    async: true, 
    type: "json", 
    opts: { 
     method: "POST", 
     url: rootPath + "QuickNav" 
    } 
    }, 
    callback: { 
    beforedata: function(NODE, TREE_OBJ) { 
     return $(NODE).attr("id") === "" ? 
     { id: $(NODE).find("a:first").attr("id")} : 
     { id: $(NODE).attr("id") || 0 }; 
    }, 
    onchange: function(NODE) { 
     document.location.href = $(NODE).children("a:first").attr("href"); 
    } 
    } 
}); 

Una muestra de JSON estoy volviendo de que Url:

[{ 
    "data": { 
     "title": "Title (<b link='/Thing/200' class='gtp'>Go to Page</b>)", 
     "attributes": { 
      "href": "#", 
      "id": "200" 
     } 
    }, 
    "state": "closed" 
}] 

el ello no es la única cosa que se pasa a mis servicios web devoluciones de llamada de método, lo que resulta en JSON como esto de ser devuelto:

[{ 
    "data": { 
     "title": "Sites", 
     "attributes": { 
      "href": "#", 
      "class": "TreeTitle" 
     } 
    }, 
    "state": "open", 
    "children": [ 
     { 
      "data": { 
       "title": "00001 - Test Thing", 
       "type": "link", 
       "attributes": { 
        "href": "/Site/39063", 
        "class": "TL" 
       } 
      } 
     }, 
     { 
      "data": { 
       "title": "00002 - Test Thing 2", 
       "type": "link", 
       "attributes": { 
        "href": "/Site/39069", 
        "class": "TL" 
       } 
      } 
     } 
    ] 
}] 
+0

@Nick: ¡Muchas gracias! Los documentos no aclaraban cómo hacer que los subnodos sean cargables. Parece que acaba de agregar "estado": "cerrado" lo hará. Y al agregar un atributo de id, tu json backend sabrá qué comprar. – Tauren