[Jquery/JStree] Children worden niet getoond

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • renevanh
  • Registratie: Juli 2006
  • Laatst online: 23-08 20:02
Bij een project waar ik mee bezig ben gebruik ik (of doe in ieder geval een poging tot) JStree, een Jquery plugin.
In dit geval gaat het om een hoofdcategorie/subcategorie 'tree'.
Het koste nogal wat tijd, maar uiteindelijk heb ik het voor elkaar dat de data uit mijn database gehaald wordt en er JSON objecten van gebakken worden.
Helaas worden de subcategorieën niet getoond en ik kan niet vinden waarom niet.

Omdat het nogal lastig debuggen is in een vrij ingewikkeld PHP script heb ik even de gegenereerde JSON code eruit gehaald en hardcoded in een testbestandje gezet.
Helaas worden de subcategorieën (children) nog altijd niet getoond.

De JSON is valide (volgens JSONlint).
De webconsole van FireFox geeft geen foutmeldingen, dus de Javascript is in principe ook goed. Het wordt blijkbaar niet juist verwerkt door JStree, maar ik kan niet vinden waar het mis gaat.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<html>
<head><title></title></head>
<script type="text/javascript" src="../Scripts/jquery.js" ></script>
<script type="text/javascript" src="../Scripts/jquery.jstree.js" ></script>
<body>
<div id="tree">
<script type="text/javascript">
$(function () {
  $("#tree").jstree({
      "json_data" : {
        "data" :[
          {
            "attr": {
              "id": "1"
            },
            "data": {
              "title": "Geluid",
              "children": [
                {
                  "data": {
                    "title": "Speakers",
                    "attr": {
                      "href": "",
                      "id": "1"
                    }
                  }
                },
                {
                  "data": {
                    "title": "Versterkers",
                    "attr": {
                      "href": "",
                      "id": "3"
                    }
                  }
                }
              ]
            }
          },
        {
          "attr": {
            "id": "2"
          },
          "data": {
            "title": "Licht",
            "children": [
              {
                "data": {
                  "title": "Parren",
                  "attr": {
                    "href": "",
                    "id": "2"
                  }
                }
              }
            ]
          }
        }
      ]
    },
    "plugins" : [ "themes", "json_data"]
  })
  .bind("select_node.jstree", function (e, data) { alert(data.rslt.obj.data("id")); });
});

</script>
</div>
</body>
</html>


Iemand ervaring met JStree?
Wie kan mij vertellen waar ik de fout in ga?

Acties:
  • 0 Henk 'm!

  • Juup
  • Registratie: Februari 2000
  • Niet online
Slinger dit even online en geef ons de link aub.

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


Acties:
  • 0 Henk 'm!

  • ^Mo^
  • Registratie: Januari 2001
  • Laatst online: 26-07 22:25
Hoi,

Ik weet eigenlijk niet goed waarom, maar je moet de title objecten eruit laten.

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
$(function () {
      $("#tree").jstree({
      "json_data" : {
        "data" :
        [
            {
                "metadata": {
                  "id": "1"
                },
                "data": "Geluid",
                "children": [
                    {
                        "data": "Speakers",
                        "attr": {
                          "href": ""                      
                        },
                        "metadata": {
                            "id": "1.1"
                        }
                    },
                    {
                        "data": "Versterkers",
                        "attr": {
                          "href": ""
                        },
                        "metadata": {
                            "id": "1.2"
                        }
                    }
                ]
            },
            {
              "metadata": {
                "id": "2"
              },
                "data": "Licht",
                "children": [
                    {
                        "data": "Parren",
                        "attr": {
                            "href": ""
                        },
                        "metadata": { 
                            "id": "2.1"
                        }
                    }
                ]
            }
        ]
      },
      "plugins" : [ "themes", "json_data", "ui"]
      }).bind("select_node.jstree", function (e, data) {
            alert(data.rslt.obj.data("id")); 
        });
      });


Dat werkt wel. Overigens heb ik de id uit het attr object gehaald, en in een metadata object gestopt, en tevens de ui plugin toegevoegd. Anders werkt je selectie/alert niet.

Ben verder eigenlijk niet bekend met jsTree, dus ik zou het je niet kunnen uitleggen waarom zo wel :)

"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs


Acties:
  • 0 Henk 'm!

  • renevanh
  • Registratie: Juli 2006
  • Laatst online: 23-08 20:02
Aha... apart, maar nu kan ik mooi verder knoeien.
Title objecten stonden in de demo sectie... dat is dus FOUT :P

Bedankt voor de hulp!