]> git.proxmox.com Git - extjs.git/blame - extjs/packages/core/src/app/bind/LinkStub.js
add extjs 6.0.1 sources
[extjs.git] / extjs / packages / core / src / app / bind / LinkStub.js
CommitLineData
6527f429
DM
1/**\r
2 * This class manages stubs associated with `link` requests. These bind to some other\r
3 * descriptor and forward changes from there.\r
4 * @private\r
5 */\r
6Ext.define('Ext.app.bind.LinkStub', {\r
7 extend: 'Ext.app.bind.Stub',\r
8\r
9 isLinkStub: true,\r
10\r
11 binding: null,\r
12\r
13 destroy: function () {\r
14 var me = this,\r
15 binding = me.binding,\r
16 owner = me.owner;\r
17\r
18 if (binding) {\r
19 me.binding = null;\r
20 binding.destroy();\r
21 if (owner) {\r
22 delete owner.linkData[me.name];\r
23 }\r
24 }\r
25 me.target = null;\r
26\r
27 me.callParent();\r
28 },\r
29\r
30 getFullName: function () {\r
31 var me = this;\r
32 return me.fullName ||\r
33 (me.fullName = '(' + me.callParent() + ' -> ' + me.binding.getFullName() + ')');\r
34 },\r
35\r
36 getDataObject: function () {\r
37 var binding = this.binding;\r
38 return binding && binding.getDataObject();\r
39 },\r
40\r
41 getRawValue: function () {\r
42 var binding = this.binding;\r
43 return binding && binding.getRawValue();\r
44 },\r
45\r
46 getValue: function () {\r
47 var binding = this.binding;\r
48\r
49 return binding && binding.getValue();\r
50 },\r
51\r
52 getTargetStub: function () {\r
53 var binding = this.binding;\r
54 return binding && binding.stub;\r
55 },\r
56\r
57 isLoading: function () {\r
58 var binding = this.binding;\r
59\r
60 return binding ? binding.isLoading() : false;\r
61 },\r
62\r
63 link: function (bindDescriptor, target) {\r
64 var me = this,\r
65 binding = me.binding;\r
66\r
67 if (binding) {\r
68 binding.destroy();\r
69 }\r
70\r
71 target = me.target = target || me.owner; \r
72 me.linkDescriptor = bindDescriptor;\r
73 me.binding = target.bind(bindDescriptor, me.onChange, me);\r
74 me.binding.deep = true;\r
75 },\r
76\r
77 onChange: function () {\r
78 this.invalidate(true);\r
79 },\r
80\r
81 react: function () {\r
82 var me = this,\r
83 linkData = me.owner.linkData;\r
84\r
85 linkData[me.name] = me.getValue();\r
86 me.callParent();\r
87 },\r
88 \r
89 privates: {\r
90 collect: function() {\r
91 var me = this,\r
92 result = me.callParent(),\r
93 binding = me.binding ? 1 : 0;\r
94 \r
95 return result + binding;\r
96 },\r
97 \r
98 sort: function () {\r
99 var binding = this.binding;\r
100\r
101 if (binding) {\r
102 // We want to make sure our binding reacts before we do so that it can provide\r
103 // whatever value we might need first.\r
104 this.scheduler.sortItem(binding);\r
105 }\r
106 }\r
107 }\r
108});\r