@ngdoc overview @name Developer Guide: About MVC in Angular: Understanding the Model Component @description Depending on the context of the discussion in angular documentation, the term _model_ can refer to either a single object representing one entity (for example, a model called "phones" with its value being an array of phones) or the entire data model for the application (all entities). In angular, a model is any data that is reachable as a property of an angular {@link scope Scope} object. The name of the property is the model identifier and the value is any JavaScript object (including arrays and primitives). The only requirement for a JavaScript object to be a model in angular is that the object must be referenced by an angular scope as a property of that scope object. This property reference can be created explicitly or implicitly. You can create models by explicitly creating scope properties referencing JavaScript objects in the following ways: * Make a direct property assignment to the scope object in JavaScript code; this most commonly occurs in controllers: function MyCtrl($scope) { // create property 'foo' on the MyCtrl's scope // and assign it an initial value 'bar' $scope.foo = 'bar'; } * Use an {@link expression angular expression} with an assignment operator in templates: * Use {@link api/ng.directive:ngInit ngInit directive} in templates (for toy/example apps only, not recommended for real applications): Angular creates models implicitly (by creating a scope property and assigning it a suitable value) when processing the following template constructs: * Form input, select, textarea and other form elements: The code above creates a model called "query" on the current scope with the value set to "fluffy cloud". * An iterator declaration in {@link api/ng.directive:ngRepeat ngRepeater}:

The code above creates one child scope for each item in the "phones" array and creates a "phone" object (model) on each of these scopes with its value set to the value of "phone" in the array. In angular, a JavaScript object stops being a model when: * No angular scope contains a property that references the object. * All angular scopes that contain a property referencing the object become stale and eligible for garbage collection. The following illustration shows a simple data model created implicitly from a simple template: ## Related Topics * {@link dev_guide.mvc About MVC in Angular} * {@link dev_guide.mvc.understanding_controller Understanding the Controller Component} * {@link dev_guide.mvc.understanding_view Understanding the View Component} plugins/tree/refcontrol.js?id=1c0a0d436e49ddbff91a8aecb213401bc7a5cbde'>refcontrol.js
blob: 890dc4d5b079902c53ec4a9f746b08ef63ea865f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204