X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/3789b528d8dd8aad4558e38e22d775bcab1cbd36..refs/heads/master:/docs/output/Ext.data.Association.js?ds=sidebyside diff --git a/docs/output/Ext.data.Association.js b/docs/output/Ext.data.Association.js index eca21543..703fbaf1 100644 --- a/docs/output/Ext.data.Association.js +++ b/docs/output/Ext.data.Association.js @@ -1,182 +1 @@ -Ext.data.JsonP.Ext_data_Association({ - "tagname": "class", - "name": "Ext.data.Association", - "doc": "
Associations enable you to express relationships between different Models. Let's say we're\nwriting an ecommerce system where Users can make Orders - there's a relationship between these Models that we can\nexpress like this:
\n\n\n\n\nExt.define('User', {\n extend: 'Ext.data.Model',\n fields: ['id', 'name', 'email'],\n\n hasMany: {model: 'Order', name: 'orders'}\n});\n\nExt.define('Order', {\n extend: 'Ext.data.Model',\n fields: ['id', 'user_id', 'status', 'price'],\n\n belongsTo: 'User'\n});\n
\n\n\n\n\nWe've set up two models - User and Order - and told them about each other. You can set up as many associations on\neach Model as you need using the two default types - hasMany and\nbelongsTo. There's much more detail on the usage of each of those inside their\ndocumentation pages. If you're not familiar with Models already, there is plenty on those too.
\n\n\n\n\nFurther Reading
\n\n\n\n\n\n\n\nSelf association models
\n\nWe can also have models that create parent/child associations between the same type. Below is an example, where\ngroups can be nested inside other groups:
\n\n\n\n// Server Data\n{\n \"groups\": {\n \"id\": 10,\n \"parent_id\": 100,\n \"name\": \"Main Group\",\n \"parent_group\": {\n \"id\": 100,\n \"parent_id\": null,\n \"name\": \"Parent Group\"\n },\n \"child_groups\": [{\n \"id\": 2,\n \"parent_id\": 10,\n \"name\": \"Child Group 1\"\n },{\n \"id\": 3,\n \"parent_id\": 10,\n \"name\": \"Child Group 2\"\n },{\n \"id\": 4,\n \"parent_id\": 10,\n \"name\": \"Child Group 3\"\n }]\n }\n}\n\n// Client code\nExt.define('Group', {\n extend: 'Ext.data.Model',\n fields: ['id', 'parent_id', 'name'],\n proxy: {\n type: 'ajax',\n url: 'data.json',\n reader: {\n type: 'json',\n root: 'groups'\n }\n },\n associations: [{\n type: 'hasMany',\n model: 'Group',\n primaryKey: 'id',\n foreignKey: 'parent_id',\n autoLoad: true,\n associationKey: 'child_groups' // read child data from child_groups\n }, {\n type: 'belongsTo',\n model: 'Group',\n primaryKey: 'id',\n foreignKey: 'parent_id',\n autoLoad: true,\n associationKey: 'parent_group' // read parent data from parent_group\n }]\n});\n\n\nExt.onReady(function(){\n \n Group.load(10, {\n success: function(group){\n console.log(group.getGroup().get('name'));\n \n group.groups().each(function(rec){\n console.log(rec.get('name'));\n });\n }\n });\n \n});\n
\n\n",
- "extends": "Object",
- "mixins": [
-
- ],
- "alternateClassNames": [
-
- ],
- "xtype": null,
- "author": "Ed Spencer",
- "docauthor": null,
- "singleton": false,
- "private": false,
- "cfg": [
- {
- "tagname": "cfg",
- "name": "associatedModel",
- "member": "Ext.data.Association",
- "type": "String",
- "doc": "The string name of the model that is being associated with. Required
\n", - "private": false, - "filename": "/Users/nick/Projects/sencha/SDK/platform/src/data/Association.js", - "linenr": 124, - "html_filename": "Association.html", - "href": "Association.html#Ext-data-Association-cfg-associatedModel" - }, - { - "tagname": "cfg", - "name": "associationKey", - "member": "Ext.data.Association", - "type": "String", - "doc": "The name of the property in the data to read the association from.\nDefaults to the name of the associated model.
\n", - "private": false, - "filename": "/Users/nick/Projects/sencha/SDK/platform/src/data/Association.js", - "linenr": 138, - "html_filename": "Association.html", - "href": "Association.html#Ext-data-Association-cfg-associationKey" - }, - { - "tagname": "cfg", - "name": "ownerModel", - "member": "Ext.data.Association", - "type": "String", - "doc": "The string name of the model that owns the association. Required
\n", - "private": false, - "filename": "/Users/nick/Projects/sencha/SDK/platform/src/data/Association.js", - "linenr": 120, - "html_filename": "Association.html", - "href": "Association.html#Ext-data-Association-cfg-ownerModel" - }, - { - "tagname": "cfg", - "name": "primaryKey", - "member": "Ext.data.Association", - "type": "String", - "doc": "The name of the primary key on the associated model. Defaults to 'id'.\nIn general this will be the Ext.data.Model.idProperty of the Model.
\n", - "private": false, - "filename": "/Users/nick/Projects/sencha/SDK/platform/src/data/Association.js", - "linenr": 128, - "html_filename": "Association.html", - "href": "Association.html#Ext-data-Association-cfg-primaryKey", - "shortDoc": "The name of the primary key on the associated model. Defaults to 'id'.\nIn general this will be the Ext.data.Model.idP..." - }, - { - "tagname": "cfg", - "name": "reader", - "member": "Ext.data.Association", - "type": "Ext.data.reader.Reader", - "doc": "A special reader to read associated data
\n", - "private": false, - "filename": "/Users/nick/Projects/sencha/SDK/platform/src/data/Association.js", - "linenr": 134, - "html_filename": "Association.html", - "href": "Association.html#Ext-data-Association-cfg-reader" - } - ], - "method": [ - { - "tagname": "method", - "name": "Association", - "member": "Ext.data.Association", - "doc": "\n", - "params": [ - { - "type": "Object", - "name": "config", - "doc": "Optional config object
\n", - "optional": false - } - ], - "return": { - "type": "void", - "doc": "\n" - }, - "private": false, - "static": false, - "filename": "/Users/nick/Projects/sencha/SDK/platform/src/data/Association.js", - "linenr": 1, - "html_filename": "Association.html", - "href": "Association.html#Ext-data-Association-method-constructor", - "shortDoc": "\n" - }, - { - "tagname": "method", - "name": "getReader", - "member": "Ext.data.Association", - "doc": "Get a specialized reader for reading associated data
\n", - "params": [ - - ], - "return": { - "type": "Ext.data.reader.Reader", - "doc": "The reader, null if not supplied
\n" - }, - "private": false, - "static": false, - "filename": "/Users/nick/Projects/sencha/SDK/platform/src/data/Association.js", - "linenr": 212, - "html_filename": "Association.html", - "href": "Association.html#Ext-data-Association-method-getReader", - "shortDoc": "Get a specialized reader for reading associated data
\n" - } - ], - "property": [ - { - "tagname": "property", - "name": "associatedName", - "member": "Ext.data.Association", - "type": "String", - "doc": "The name of the model is on the other end of the association (e.g. if a User model hasMany Orders, this is 'Order')
\n", - "private": false, - "static": false, - "filename": "/Users/nick/Projects/sencha/SDK/platform/src/data/Association.js", - "linenr": 200, - "html_filename": "Association.html", - "href": "Association.html#Ext-data-Association-property-associatedName" - }, - { - "tagname": "property", - "name": "ownerName", - "member": "Ext.data.Association", - "type": "String", - "doc": "The name of the model that 'owns' the association
\n", - "private": false, - "static": false, - "filename": "/Users/nick/Projects/sencha/SDK/platform/src/data/Association.js", - "linenr": 194, - "html_filename": "Association.html", - "href": "Association.html#Ext-data-Association-property-ownerName" - } - ], - "event": [ - - ], - "filename": "/Users/nick/Projects/sencha/SDK/platform/src/data/Association.js", - "linenr": 1, - "html_filename": "Association.html", - "href": "Association.html#Ext-data-Association", - "cssVar": [ - - ], - "cssMixin": [ - - ], - "component": false, - "superclasses": [ - - ], - "subclasses": [ - "Ext.data.BelongsToAssociation", - "Ext.data.HasManyAssociation" - ], - "mixedInto": [ - - ], - "allMixins": [ - - ] -}); \ No newline at end of file +Ext.data.JsonP.Ext_data_Association({"tagname":"class","html":"Hierarchy
Ext.BaseExt.data.AssociationFiles
Associations enable you to express relationships between different Models. Let's say we're\nwriting an ecommerce system where Users can make Orders - there's a relationship between these Models that we can\nexpress like this:
\n\nExt.define('User', {\n extend: 'Ext.data.Model',\n fields: ['id', 'name', 'email'],\n\n hasMany: {model: 'Order', name: 'orders'}\n});\n\nExt.define('Order', {\n extend: 'Ext.data.Model',\n fields: ['id', 'user_id', 'status', 'price'],\n\n belongsTo: 'User'\n});\n
\n\nWe've set up two models - User and Order - and told them about each other. You can set up as many associations on\neach Model as you need using the two default types - hasMany and belongsTo. There's much more detail on the usage of each of those inside their\ndocumentation pages. If you're not familiar with Models already, there is plenty on those too.
\n\nFurther Reading
\n\n\n\n\nWe can also have models that create parent/child associations between the same type. Below is an example, where\ngroups can be nested inside other groups:
\n\n// Server Data\n{\n \"groups\": {\n \"id\": 10,\n \"parent_id\": 100,\n \"name\": \"Main Group\",\n \"parent_group\": {\n \"id\": 100,\n \"parent_id\": null,\n \"name\": \"Parent Group\"\n },\n \"child_groups\": [{\n \"id\": 2,\n \"parent_id\": 10,\n \"name\": \"Child Group 1\"\n },{\n \"id\": 3,\n \"parent_id\": 10,\n \"name\": \"Child Group 2\"\n },{\n \"id\": 4,\n \"parent_id\": 10,\n \"name\": \"Child Group 3\"\n }]\n }\n}\n\n// Client code\nExt.define('Group', {\n extend: 'Ext.data.Model',\n fields: ['id', 'parent_id', 'name'],\n proxy: {\n type: 'ajax',\n url: 'data.json',\n reader: {\n type: 'json',\n root: 'groups'\n }\n },\n associations: [{\n type: 'hasMany',\n model: 'Group',\n primaryKey: 'id',\n foreignKey: 'parent_id',\n autoLoad: true,\n associationKey: 'child_groups' // read child data from child_groups\n }, {\n type: 'belongsTo',\n model: 'Group',\n primaryKey: 'id',\n foreignKey: 'parent_id',\n associationKey: 'parent_group' // read parent data from parent_group\n }]\n});\n\nExt.onReady(function(){\n\n Group.load(10, {\n success: function(group){\n console.log(group.getGroup().get('name'));\n\n group.groups().each(function(rec){\n console.log(rec.get('name'));\n });\n }\n });\n\n});\n
\nThe string name of the model that is being associated with.
\nThe string name of the model that is being associated with.
\nThe name of the property in the data to read the association from. Defaults to the name of the associated model.
\nThe string name of the model that owns the association.
\nThe string name of the model that owns the association.
\nThe name of the primary key on the associated model. In general this will be the\nExt.data.Model.idProperty of the Model.
\nDefaults to: "id"
The name of the model is on the other end of the association (e.g. if a User model hasMany Orders, this is\n'Order')
\nThe name of the model that 'owns' the association
\nThe name of the model that 'owns' the association
\nGet the reference to the current class from which this object was instantiated. Unlike statics,\nthis.self
is scope-dependent and it's meant to be used for dynamic inheritance. See statics\nfor a detailed comparison
Ext.define('My.Cat', {\n statics: {\n speciesName: 'Cat' // My.Cat.speciesName = 'Cat'\n },\n\n constructor: function() {\n alert(this.self.speciesName); / dependent on 'this'\n\n return this;\n },\n\n clone: function() {\n return new this.self();\n }\n});\n\n\nExt.define('My.SnowLeopard', {\n extend: 'My.Cat',\n statics: {\n speciesName: 'Snow Leopard' // My.SnowLeopard.speciesName = 'Snow Leopard'\n }\n});\n\nvar cat = new My.Cat(); // alerts 'Cat'\nvar snowLeopard = new My.SnowLeopard(); // alerts 'Snow Leopard'\n\nvar clone = snowLeopard.clone();\nalert(Ext.getClassName(clone)); // alerts 'My.SnowLeopard'\n
\nCall the original method that was previously overridden with override
\n\nExt.define('My.Cat', {\n constructor: function() {\n alert(\"I'm a cat!\");\n\n return this;\n }\n});\n\nMy.Cat.override({\n constructor: function() {\n alert(\"I'm going to be a cat!\");\n\n var instance = this.callOverridden();\n\n alert(\"Meeeeoooowwww\");\n\n return instance;\n }\n});\n\nvar kitty = new My.Cat(); // alerts \"I'm going to be a cat!\"\n // alerts \"I'm a cat!\"\n // alerts \"Meeeeoooowwww\"\n
\nThe arguments, either an array or the arguments
object
Returns the result after calling the overridden method
\nCall the parent's overridden method. For example:
\n\nExt.define('My.own.A', {\n constructor: function(test) {\n alert(test);\n }\n});\n\nExt.define('My.own.B', {\n extend: 'My.own.A',\n\n constructor: function(test) {\n alert(test);\n\n this.callParent([test + 1]);\n }\n});\n\nExt.define('My.own.C', {\n extend: 'My.own.B',\n\n constructor: function() {\n alert(\"Going to call parent's overriden constructor...\");\n\n this.callParent(arguments);\n }\n});\n\nvar a = new My.own.A(1); // alerts '1'\nvar b = new My.own.B(1); // alerts '1', then alerts '2'\nvar c = new My.own.C(2); // alerts \"Going to call parent's overriden constructor...\"\n // alerts '2', then alerts '3'\n
\nThe arguments, either an array or the arguments
object\nfrom the current method, for example: this.callParent(arguments)
Returns the result from the superclass' method
\nGet a specialized reader for reading associated data
\nThe reader, null if not supplied
\nInitialize configuration for this class. a typical example:
\n\nExt.define('My.awesome.Class', {\n // The default config\n config: {\n name: 'Awesome',\n isAwesome: true\n },\n\n constructor: function(config) {\n this.initConfig(config);\n\n return this;\n }\n});\n\nvar awesome = new My.awesome.Class({\n name: 'Super Awesome'\n});\n\nalert(awesome.getName()); // 'Super Awesome'\n
\nmixins The mixin prototypes as key - value pairs
\nGet the reference to the class from which this object was instantiated. Note that unlike self,\nthis.statics()
is scope-independent and it always returns the class from which it was called, regardless of what\nthis
points to during run-time
Ext.define('My.Cat', {\n statics: {\n totalCreated: 0,\n speciesName: 'Cat' // My.Cat.speciesName = 'Cat'\n },\n\n constructor: function() {\n var statics = this.statics();\n\n alert(statics.speciesName); // always equals to 'Cat' no matter what 'this' refers to\n // equivalent to: My.Cat.speciesName\n\n alert(this.self.speciesName); // dependent on 'this'\n\n statics.totalCreated++;\n\n return this;\n },\n\n clone: function() {\n var cloned = new this.self; // dependent on 'this'\n\n cloned.groupName = this.statics().speciesName; // equivalent to: My.Cat.speciesName\n\n return cloned;\n }\n});\n\n\nExt.define('My.SnowLeopard', {\n extend: 'My.Cat',\n\n statics: {\n speciesName: 'Snow Leopard' // My.SnowLeopard.speciesName = 'Snow Leopard'\n },\n\n constructor: function() {\n this.callParent();\n }\n});\n\nvar cat = new My.Cat(); // alerts 'Cat', then alerts 'Cat'\n\nvar snowLeopard = new My.SnowLeopard(); // alerts 'Cat', then alerts 'Snow Leopard'\n\nvar clone = snowLeopard.clone();\nalert(Ext.getClassName(clone)); // alerts 'My.SnowLeopard'\nalert(clone.groupName); // alerts 'Cat'\n\nalert(My.Cat.totalCreated); // alerts 3\n
\nAdd / override static properties of this class.
\n\nExt.define('My.cool.Class', {\n ...\n});\n\nMy.cool.Class.addStatics({\n someProperty: 'someValue', // My.cool.Class.someProperty = 'someValue'\n method1: function() { ... }, // My.cool.Class.method1 = function() { ... };\n method2: function() { ... } // My.cool.Class.method2 = function() { ... };\n});\n
\nthis
\nBorrow another class' members to the prototype of this class.
\n\nExt.define('Bank', {\n money: '$$$',\n printMoney: function() {\n alert('$$$$$$$');\n }\n});\n\nExt.define('Thief', {\n ...\n});\n\nThief.borrow(Bank, ['money', 'printMoney']);\n\nvar steve = new Thief();\n\nalert(steve.money); // alerts '$$$'\nsteve.printMoney(); // alerts '$$$$$$$'\n
\nThe class to borrow members from
\nThe names of the members to borrow
\nthis
\nCreate a new instance of this Class.
\n\nExt.define('My.cool.Class', {\n ...\n});\n\nMy.cool.Class.create({\n someConfig: true\n});\n
\n\nAll parameters are passed to the constructor of the class.
\nthe created instance.
\nCreate aliases for existing prototype methods. Example:
\n\nExt.define('My.cool.Class', {\n method1: function() { ... },\n method2: function() { ... }\n});\n\nvar test = new My.cool.Class();\n\nMy.cool.Class.createAlias({\n method3: 'method1',\n method4: 'method2'\n});\n\ntest.method3(); // test.method1()\n\nMy.cool.Class.createAlias('method5', 'method3');\n\ntest.method5(); // test.method3() -> test.method1()\n
\nThe new method name, or an object to set multiple aliases. See\nflexSetter
\nThe original method name
\nGet the current class' name in string format.
\n\nExt.define('My.cool.Class', {\n constructor: function() {\n alert(this.self.getName()); // alerts 'My.cool.Class'\n }\n});\n\nMy.cool.Class.getName(); // 'My.cool.Class'\n
\nclassName
\nAdd methods / properties to the prototype of this class.
\n\nExt.define('My.awesome.Cat', {\n constructor: function() {\n ...\n }\n});\n\n My.awesome.Cat.implement({\n meow: function() {\n alert('Meowww...');\n }\n });\n\n var kitty = new My.awesome.Cat;\n kitty.meow();\n
\nOverride prototype members of this class. Overridden methods can be invoked via\ncallOverridden
\n\nExt.define('My.Cat', {\n constructor: function() {\n alert(\"I'm a cat!\");\n\n return this;\n }\n});\n\nMy.Cat.override({\n constructor: function() {\n alert(\"I'm going to be a cat!\");\n\n var instance = this.callOverridden();\n\n alert(\"Meeeeoooowwww\");\n\n return instance;\n }\n});\n\nvar kitty = new My.Cat(); // alerts \"I'm going to be a cat!\"\n // alerts \"I'm a cat!\"\n // alerts \"Meeeeoooowwww\"\n
\nthis
\n