2010-05-24 2 views
1

J'ai écrit une application en utilisant Dojo 1.3 dans lequel j'ai utilisé le composant Dijit Tree. Je charge l'arbre avec les données JSON spécifiées dans le magasin, qui est à son tour utilisé par le modèle d'arbre.Comment définir un ID DOM personnalisé pour les noeuds d'arbre dans Dojo 1.4?

Dans la version 1.3, les éléments de l'arbre récupèrent l'identifiant directement à partir des données JSON. Cependant dans 1.4 les éléments d'arbre ont leur propre id qui est quelque chose comme dijit_treenode_4. Les identifiants que j'ai spécifiés dans JSON sont uniques et ne sont pas capables de comprendre pourquoi ils ne sont plus utilisés.

S'il vous plaît aidez-moi à comprendre comment cette fonctionnalité a changé et comment je peux remplacer la génération automatique d'identifiants.

Merci à l'avance,
Fell

Répondre

0

Je pense que cette décision de conception est une belle amélioration sur la séparation du modèle et la vue. Les identifiants dans les données du magasin ne devraient pas avoir d'impact sur l'identifiant de l'élément DOM du nœud de l'arbre par défaut.

Bien sûr, si vous voulez ce comportement, vous pouvez le réaliser. Définissez votre propre classe de nœud d'arbre qui remplace l'ID d'élément DOM.

dojo.require('dijit.Tree'); 

dojo.declare('yourapp.TreeNode', [dijit._TreeNode], { 
    // summary: 
    //   Tree node with custom ID. 
    postCreate: function(){ 
     // summary: 
     //   Overrides the normal `postCreate()` method to set custom ID 
     //   for node DOM element. 
     this.inherited(arguments); 
     var id = this.tree.model.store.getValue(this.item, 'id'); 
     this.domNode.id = id; 
    } 
}); 

Ensuite, la sous-classe dijit.Tree et remplacez la méthode _createTreeNode() pour créer vos nœuds d'arbres personnalisés.

dojo.declare('yourapp.Tree', [dijit.Tree], { 
    _createTreeNode: function(args) { 
     return new yourapp.TreeNode(args); 
    } 
}); 
Questions connexes