Note that there are some explanatory texts on larger screens.

plurals
  1. PODijit Checkbox tree event delegation
    text
    copied!<p>I am trying to implement a dijit checkbox tree similar to <a href="http://thejekels.com/dojo/cbtree_AMD.html" rel="nofollow">http://thejekels.com/dojo/cbtree_AMD.html</a></p> <p>And overriding a method like this : </p> <pre><code> connect.connect( tree, "_onExpandoClick", model, this,function(/*data.item*/ item) { console.log("My onExpandoClick"); }); </code></pre> <p>Dijit Tree javascript file already contains the handler method for this event. My problem is that</p> <blockquote> <p>I want the above overridden method to be called after tree js method handler have been executed.As per now its always called first.Any idea.(dijit 1.7)</p> </blockquote> <p>In my setup the below code isn't working : </p> <pre><code> require(["dijit/TitlePane"]); require([ "dojo/_base/lang", "dojo/dom", "dojo/aspect", "dijit/CheckboxTree", "dojox/data/JsonRestStore", "my_ext/CheckboxForestStoreModel", "dojo/domReady!" ], function(dom, Tree, JsonRestStore, CheckboxForestStoreModel) { var treeStore = new JsonRestStore({ target: "ObjectTreeServlet/",labelAttribute:"name",allowNoTrailingSlash:true}); var treeModel = new CheckboxForestStoreModel({ store: treeStore, deferItemLoadingUntilExpand: true, rootId: "ROOT", rootLabel: "NETWORK", childrenAttrs: ["children"], query:"?id=0" }); var treeStateSession= '&lt;%=session.getAttribute("treeState")%&gt;'; //alert(treeStateSession); var tree = new Tree({ id : "tree", model : treeModel, showRoot : false, persist: true, setCheckboxOnClick : false, _sessionVal:treeStateSession }, 'treeDiv'); function getParameterByName(url,name) { var match = RegExp('[?&amp;]' + name + '=([^&amp;]*)') .exec(url); return match &amp;&amp; decodeURIComponent(match[1].replace(/\+/g, ' ')); } dojo.require("dojo.aspect"); /* aspect.after(tree, "_onExpandoClick", function(item) { console.log(tree.getSessionValue()); document.getElementById("treeState").value=tree.getSessionValue(); console.log(document.getElementById("treeState").value.length); }); */ aspect.after(tree, "_onExpandoClick", function() { console.log("My onExpandoClick"); </code></pre> <p>});</p> <p><em>Code Inside CheckBoxTree.js :</em> </p> <pre><code>_state: function(node, expanded){ // summary: // Query or set expanded state for an node if(!this.persist){ return false; } var path = array.map(node.getTreePath(), function(item){ return this.model.getIdentity(item); }, this).join("/"); if(arguments.length === 1){ return this._openedNodes[path]; }else{ if(expanded){ this._openedNodes[path] = true; }else{ delete this._openedNodes[path]; } var ary = []; for(var id in this._openedNodes){ ary.push(id); } //console.log(ary.length); //cookie(this.cookieName, ary.join(","), {expires:365}); var sessionVal=ary.join(","); console.log("TreeSTATE CheckBOX"); **//FROM HERE SEND sessionVal TO MAIN HTML PAGE WHERE TREE IS CREATED?** //this.getSessionValue(ary.join(",")); } }, </code></pre> <p><em>What I tried ,which is not giving desired results.:</em> </p> <pre><code>aspect.after(tree, "_state", function() { console.log("TreeSTATE " + tree.getSessionValue()); document.getElementById("treeState").value=tree.getSessionValue(); }); </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload