/** * This class is used as a base class from which to derive Models used in Trees. */Ext.define('Ext.data.TreeModel', { extend: 'Ext.data.Model', requires: [ 'Ext.data.NodeInterface' ], mixins: [ 'Ext.mixin.Queryable' ], /** * @cfg {String} [childType] * The class name of child nodes to create when reading child nodes from * raw data. By default the type configured into the TreeStore is used. * * This is one way of creating heterogeneous nodes in a tree. * * To do this through data types passed from the server, use the * {@link Ext.data.reader.Reader#typeProperty}. * * for example in the case of a hidden root node, you'd use the default type at level zero. * See {@link Ext.tree.Panel TreePanel}'s documentation for an example. * * *Important* * If you are using this declaration on your tree models, and have a * {@link Ext.tree.Panel#rootVisible hidden root node}, you MUST create a special root model * definition which declares the type of its children. * * If you allow the TreeStore to create a root node of the same type as the first level of * *visible* nodes then the reader will atempt to read the wrong type of child node for the * root. * * Example: * * Ext.define('myApp.World', { * childType: 'Territory' * }); * * ... * * store: { * id: 'myTreeStore', * model: 'myApp.World' // The hidden root will know to create 'Territory' type children * } * * If the root is hidden, and the first level of visible nodes are going to be the * `myApp.Territory` class, then the hidden root must not be of the `myApp.Territory` class. * Otherwise, it would try to read in the territory data as its childType - most likely * 'Country'. * */ getRefItems: function() { return this.childNodes; }, getRefOwner: function() { return this.parentNode; }, statics: { defaultProxy: 'memory' }}, function() { Ext.data.NodeInterface.decorate(this);});