<html>\r
<head>\r
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> \r
<title>The source code</title>\r
<link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />\r
<script type="text/javascript" src="../resources/prettify/prettify.js"></script>\r
"loadexception"\r
);\r
Ext.tree.TreeLoader.superclass.constructor.call(this);\r
- if(typeof this.paramOrder == 'string'){\r
+ if(Ext.isString(this.paramOrder)){\r
this.paramOrder = this.paramOrder.split(/[\s,|]/);\r
}\r
};\r
* <tt>{@link #paramOrder}</tt> nullifies this configuration.\r
*/\r
paramsAsHash: false,\r
+ \r
+ <div id="cfg-Ext.tree.TreeLoader-nodeParameter"></div>/**\r
+ * @cfg {String} nodeParameter The name of the parameter sent to the server which contains\r
+ * the identifier of the node. Defaults to <tt>'node'</tt>.\r
+ */\r
+ nodeParameter: 'node',\r
\r
<div id="cfg-Ext.tree.TreeLoader-directFn"></div>/**\r
* @cfg {Function} directFn\r
* This is called automatically when a node is expanded, but may be used to reload\r
* a node (or append new children if the {@link #clearOnLoad} option is false.)\r
* @param {Ext.tree.TreeNode} node\r
- * @param {Function} callback\r
- * @param (Object) scope\r
+ * @param {Function} callback Function to call after the node has been loaded. The \r
+ * function is passed the TreeNode which was requested to be loaded.\r
+ * @param (Object) scope The cope (<code>this</code> reference) in which the callback is executed.\r
+ * defaults to the loaded TreeNode.\r
*/\r
load : function(node, callback, scope){\r
if(this.clearOnLoad){\r
}\r
}\r
if(this.doPreload(node)){ // preloaded json children\r
- this.runCallback(callback, scope || node, []);\r
+ this.runCallback(callback, scope || node, [node]);\r
}else if(this.directFn || this.dataUrl || this.url){\r
this.requestData(node, callback, scope || node);\r
}\r
}\r
return buf;\r
}else{\r
- for(var key in bp){\r
- if(!Ext.isFunction(bp[key])){\r
- buf.push(encodeURIComponent(key), "=", encodeURIComponent(bp[key]), "&");\r
- }\r
- }\r
- buf.push("node=", encodeURIComponent(node.id));\r
- return buf.join("");\r
+ var o = Ext.apply({}, bp);\r
+ o[this.nodeParameter] = node.id;\r
+ return o;\r
}\r
},\r
\r
* Example:<pre><code>\r
new Ext.tree.TreePanel({\r
...\r
- new Ext.tree.TreeLoader({\r
+ loader: new Ext.tree.TreeLoader({\r
url: 'dataUrl',\r
createNode: function(attr) {\r
// Allow consolidation consignments to have\r
attr.iconCls = 'x-consol',\r
attr.allowDrop = true;\r
}\r
- return Ext.tree.TreeLoader.prototype.call(this, attr);\r
+ return Ext.tree.TreeLoader.prototype.createNode.call(this, attr);\r
}\r
}),\r
...\r
if(this.baseAttrs){\r
Ext.applyIf(attr, this.baseAttrs);\r
}\r
- if(this.applyLoader !== false){\r
+ if(this.applyLoader !== false && !attr.loader){\r
attr.loader = this;\r
}\r
- if(typeof attr.uiProvider == 'string'){\r
+ if(Ext.isString(attr.uiProvider)){\r
attr.uiProvider = this.uiProviders[attr.uiProvider] || eval(attr.uiProvider);\r
}\r
if(attr.nodeType){\r
var a = response.argument;\r
this.fireEvent("loadexception", this, a.node, response);\r
this.runCallback(a.callback, a.scope || a.node, [a.node]);\r
+ },\r
+ \r
+ destroy : function(){\r
+ this.purgeListeners();\r
}\r
});</pre> \r
</body>\r