dijit/Tree<\/A> kunnen gebruiken, je zou gewoon reguliere DOM-elementen kunnen gebruiken, kies maar.<\/P><\/P>
Hier is wat code die precies dit doet.<\/P>
define([\n 'dojo\/_base\declare',\n 'dojo\/_base\Deferred',\n 'dojo\/_base\on',\n 'dojo\/_base\topic',\n 'dojo\/_base\query',\n 'dojo\/_base\dom',\n 'dojo\/_base\dom-attr',\n 'put-selector',\n 'dojo\/_base\dom-class',\n 'dojo\/_base\Evented',\n 'esri\/_base\lang',\n '.\/_layerservice',\n 'dojox/lang/functional/curry',\n 'dijit\/_WidgetBase',\n 'dijit\/_TemplatedMixin',\n 'dojo/text!.\/_templates/layertoc.tpl.html'\n], function(\n declare, Deferred, on, topic,\n query, dom, domAttr, put, domClass,\n Evented, esriLang,\n getLayers, curry,\n _WidgetBase, _TemplatedMixin,\n template\n) {\n var labelName = curry(function(a, b) {\n if (b.label && b.label.length > 1) {\n return b.label;\n } else if (a.layerName && a.layerName.length) {\n return a.layerName;\n } else {\n return 'Layer Item';\n }\n });\n var sub = esriLang.substitute;\n var layertitle = '<span class=\\"pull-right\\">${title}<\\/span>';\n return declare([_WidgetBase, _TemplatedMixin, Evented], {\n templateString: template,\n postCreate: function() {\n var node = dom.byId('map_root');\n put(node, this.domNode);\n var map = this.get('map');\n var layerIds = this.get('layerIds');\n \/20map over the layer ids and pull20 \/20the layers designated as part of legend20 \/20 \n this.tocLayers = map.layerIds.map(function(x) {\n if (layerIds.indexOf(x) >-1) { \n return map.getLayer(x); \n } else { \n return false;} \n  .& nbsp;.map(function(a) { return a ; }); \ n & nbsp ; & nbsp ; & nbsp ; & nbsp ; \/20map over those layers and create some DOM element containers20 \/20 \ n & nbsp ; & nbsp ; & nbsp ; & nbsp ; this.tocLayers.map(function(x) { \ n & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; var visible = x.visible ? 'glyphicon-ok' : 'glyphicon-ban-circle'; \ n & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; var panel = put(this.tocInfo,'div.panel.panel-default'); \ n & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; var pheading = put(panel,'div.panel-heading'); \ n & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; var ptitle = put(pheading,'h4.panel-title'); \ n & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; put( \ n & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; ptitle , \ n & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ;& nb sp ' span.glyphicon.' + visible + \ n & nb sp ' .layer-item[data-layer-id=' + x.id + ']') \ n & nb sp ); \ n & nb sp var node = \ n & nb sp put(ptitle , \ n & nb sp ' span' , \ n & nb sp { innerHTML: sub(x , layertitle )} \ n & nb sp ); \ n & nb sp this._getDetails(x , node , panel ); \ n & nb sp }.bind(this)); \ n & nb sp \/20this will handle turning the whole service on2Foff20 \/20 \ n & nb sp var layerHandle = on(this.tocInfo , '.layer-item:click' , function(e) { \ n & nb sp e.preventDefault(); \ n & nb sp e.stopPropagation(); \ n & nb sp domClass.toggle(e.target , 'glyphicon-ok glyphicon-ban-circle'); \ n & nb sp var id = domAttr.get(e.target , 'data-layer-id'); \ n & nb sp var lyr = map.getLayer(id); \ n & nb sp lyr.setVisibility(!lyr.visible); \ n & nb sp }); \ n \/20this will turn individual layers on2Foff20 \/20 \ n var itemHandle = on(this.tocInfo , '.sublayer-item:click' , function(e) { \ n e.preventDefault(); \ n e.stopPropagation(); \ n domClass.toggle(e.target , 'glyphicon-ok glyphicon-ban-circle'); \ n var id = domAttr.get(e.target , 'data-layer-id'); \ n var subid = parseInt(domAttr.get(e.target , 'data-sublayer-id')); \ n var lyr = map.getLayer(id); \ n var lyrs = lyr.visibleLayers; \ n var visibleLayers = []; \ n \/20this bit will adjust the visible layers based on what was clicked20 \/20 \ n if (lyrs.indexOf(subid) > -1) { \ n visibleLayers = lyrs.filter(function(x) { return x !== subid }); } else { visibleLayers = lyrs.concat([subid]); } lyr.setVisibleLayers(visibleLayers); }); this.own(layerHandle,itemHandle); }, \/20do a quick check that a URL has been provided \/20 _getDetails:function(layer,node,panel){ if(!layer.url){return;} var pbody=put(panel,'div.panel-body'); this._getLegend(layer,pbody); }, \/20here is the workhorse \/20 _getLegend:function(layer,pbody){ var url=layer.url+'\\/legend'; var id=layer.id;2F2F this is a just a wrapper module I use for
2F2F esri\\request. zie bron op <\\SPAN>