<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9089897966735960548</id><updated>2024-10-06T22:00:21.398-07:00</updated><category term="Error"/><category term="How-To"/><category term="API"/><category term="Architecture"/><category term="Configuration"/><title type='text'>ExtJS Focus</title><subtitle type='html'>Creating MVC apps using ExtJS on IIS - Lessons Learned, Tips, Troubleshooting Help, How-To&#39;s, etc.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://extjsfocus.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089897966735960548/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://extjsfocus.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Parthiban Sundaram</name><uri>http://www.blogger.com/profile/17201575300449827879</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9089897966735960548.post-9174108844139168473</id><published>2012-01-19T11:21:00.000-08:00</published><updated>2012-01-19T11:24:29.638-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="API"/><title type='text'>Ext.define versus Ext.create</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Ext.define is used to define (or, specify) a class. You may use Ext.define to define a root class or a derived class. When you are defining a derived class, it is possible to override parent class&#39;s instance method as well as static method! (see&amp;nbsp;&lt;a href=&quot;http://docs.sencha.com/ext-js/4-0/#!/api/Ext.Class-cfg-override&quot;&gt;http://docs.sencha.com/ext-js/4-0/#!/api/Ext.Class-cfg-override&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
Ext.create is used to instantiate a class.&lt;br /&gt;
&lt;br /&gt;
Ext.create takes the name of the class you&#39;ve Ext.defined elsewhere, or an anonymous class.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Examples:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
1. Ext.create taking an anonymous class as argument:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ext.create(&#39;Ext.panel.Panel&#39;, {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; title: &#39;Hello&#39;,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; width: 200,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; html: &#39;&amp;lt;p&amp;gt;World!&amp;lt;/p&amp;gt;&#39;,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; renderTo: Ext.getBody()&lt;br /&gt;
});&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
2. Ext.create taking the name of a class that has been Ext.defined separately.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
Ext.define(&#39;My.panel.Panel&#39;, {&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; title: &#39;Hello&#39;,&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; width: 200,&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; html: &#39;&amp;lt;p&amp;gt;World!&amp;lt;/p&amp;gt;&#39;&lt;/div&gt;
&lt;div&gt;
});&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Ext.create(&#39;My.panel.Panel&#39;, {&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; renderTo: Ext.getBody()&lt;/div&gt;
&lt;div&gt;
});&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://extjsfocus.blogspot.com/feeds/9174108844139168473/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://extjsfocus.blogspot.com/2012/01/extdefine-versus-extcreate.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089897966735960548/posts/default/9174108844139168473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089897966735960548/posts/default/9174108844139168473'/><link rel='alternate' type='text/html' href='http://extjsfocus.blogspot.com/2012/01/extdefine-versus-extcreate.html' title='Ext.define versus Ext.create'/><author><name>Parthiban Sundaram</name><uri>http://www.blogger.com/profile/17201575300449827879</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089897966735960548.post-4373222272852003439</id><published>2011-12-07T08:35:00.001-08:00</published><updated>2011-12-07T08:44:36.171-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Error"/><title type='text'>Object # Object has no method &#39;read&#39;</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; color: red; font-family: Consolas, &#39;Lucida Console&#39;, monospace; font-size: 12px; line-height: 12px; white-space: pre-wrap;&quot;&gt;Object #&amp;lt;Object&amp;gt; has no method &#39;read&#39;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; color: red; font-family: Consolas, &#39;Lucida Console&#39;, monospace; font-size: 12px; line-height: 12px; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
This error occurs usually when ExtJS cannot find a Model class that you are trying to use in a different Model or in a store.&lt;br /&gt;
&lt;br /&gt;
To avoid this error, make sure:&lt;br /&gt;
(a) you use fully-qualified Model names wherever you refer to them. E.g., &quot;contacts.model.AddressModel&quot; instead of just &quot;AddressModel&quot;.&lt;br /&gt;
(b) you have placed the file having the code for the Model class in the app\model folder&lt;br /&gt;
(c) you have a &quot;&lt;a href=&quot;http://docs.sencha.com/ext-js/4-0/#!/api/Ext.Class-cfg-requires&quot;&gt;requires&lt;/a&gt;&quot; config set up on the respective Model or store object.&lt;br /&gt;
&lt;br /&gt;
Here&#39;s an example: ContactModel references AddressModel&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&amp;nbsp;Ext.define(&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&#39;contacts.model.ContactModel&#39;, {&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;extend: &#39;Ext.data.Model&#39;,&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;requires : [&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;&#39;contacts.model.AddressModel&#39;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;],&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;fields: [&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;{ name: &#39;id&#39;, type: &#39;integer&#39; },&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;{ name: &#39;name&#39;, type: &#39;string&#39; },&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;{ name: &#39;company&#39;, type: &#39;string&#39; },&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;{ name: &#39;age&#39;, type: &#39;integer&#39; },&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;{ name: &#39;addresses&#39;, type: &#39;array&#39; },&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;],&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;hasMany: {model: &#39;contacts.model.AddressModel&#39;,&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;name: &#39;addresses&#39;, associationKey:&#39;addresses&#39;}&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;});&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Here&#39;s another example: ContactStore uses ContactModel&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;Ext.define(&#39;contacts.store.ContactStore&#39;, {&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; extend: &#39;Ext.data.Store&#39;,&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;background-color: #cccccc; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; constructor: function(cfg) {&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var me = this;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cfg = cfg || {};&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; me.callParent([Ext.apply({&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; autoLoad: true,&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; storeId: &#39;ContactStore&#39;,&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;requires: [&#39;contacts.model.ContactModel&#39;],&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;model: &#39;contacts.model.ContactModel&#39;,&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;singleton : true,&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; proxy: {&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; type: &#39;ajax&#39;,&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; url: &#39;http://localhost/contacts.json&#39;,&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reader: {&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; type: &#39;json&#39;,&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; root: &#39;data&#39;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }, cfg)]);&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #cccccc;&quot;&gt;});&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://extjsfocus.blogspot.com/feeds/4373222272852003439/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://extjsfocus.blogspot.com/2011/12/this-error-occurs-usually-when-extjs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089897966735960548/posts/default/4373222272852003439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089897966735960548/posts/default/4373222272852003439'/><link rel='alternate' type='text/html' href='http://extjsfocus.blogspot.com/2011/12/this-error-occurs-usually-when-extjs.html' title='Object # Object has no method &#39;read&#39;'/><author><name>Parthiban Sundaram</name><uri>http://www.blogger.com/profile/17201575300449827879</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089897966735960548.post-2930067877674445793</id><published>2011-12-07T07:30:00.001-08:00</published><updated>2011-12-07T08:26:51.291-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Architecture"/><title type='text'>MVC in ExtJS - Why do we need a Model?</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
This blog post is based on how I understand now. I&#39;ll refine it in future.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Need for View and Controller&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The need for View and Controller is relatively easy to understand (than the need for a model) in an ExtJS app. The arguments for separating View and Controller are the same here in ExtJS as well: separation of concerns. By isolating the controller logic from view, it is possible to reuse views, test them easily, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Need for Model&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The need for model in ExtJS may be slightly difficult to understand to a beginner. &amp;nbsp; It is because of the ambiguity surrounding the purpose of two different, yet similar objects - Store and Model, and when to use which object.&lt;br /&gt;
&lt;br /&gt;
According to ExtJS help docs, &quot;The Store class encapsulates a client side cache of Model objects.&quot;&lt;br /&gt;
&lt;br /&gt;
It is like a C# datatable object that contains many rows of data. In this analogy, each row of data is a Model instance.&lt;br /&gt;
&lt;br /&gt;
Store is always needed because it is the only way in which data can be stored on the client-side (browser) and be made available for consumption by many views.&lt;br /&gt;
&lt;br /&gt;
Model is a choice. We may choose to create a model or choose not to create one.&lt;br /&gt;
&lt;br /&gt;
If we choose to use a model, then each row of data in a Store is a Model instance and hence we will have access to validation, associations, etc. that are part of the Model.&lt;br /&gt;
&lt;br /&gt;
Now, let us look at when we would need to create a model. But, first let us look at what components make up a Store object and a Model object.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeVFYlYIr3iFGK9NwAAiZAdGWBWhylzmX_Ud6UwkKt4A2NmB_Tsh0CZVyV-rdq4KQ5Pos_dAaGMcsknekd59UXVdd5oENkEx77qIyQBypMuQuCmbsH_Ue3etpG-f6FVEB4OP9qlTgyAs4/s1600/Model.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;190&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeVFYlYIr3iFGK9NwAAiZAdGWBWhylzmX_Ud6UwkKt4A2NmB_Tsh0CZVyV-rdq4KQ5Pos_dAaGMcsknekd59UXVdd5oENkEx77qIyQBypMuQuCmbsH_Ue3etpG-f6FVEB4OP9qlTgyAs4/s400/Model.gif&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&amp;nbsp;As you can see, both Model and Store share two properties: Fields and Proxy.&lt;br /&gt;
&lt;br /&gt;
Proxy has two important properties: Reader and Writer. These are useful to fetch the data from the database /webserver and also to save any changes back to the data source.&lt;br /&gt;
&lt;br /&gt;
Since proxy can be defined on Model or a Store, it is possible to do CRUD operations without a Model object!&lt;br /&gt;
&lt;br /&gt;
Store also has fields collection. So, it is possible to databind a view to a Store and we do not need a Model object here as well.&lt;br /&gt;
&lt;br /&gt;
So, it pretty much boils down to two scenarios when we would need a model:&lt;br /&gt;
(a) When we want to perform validations on the data before saving&lt;br /&gt;
(b) When we have hierarchical data and we want to navigate up and down the hierarchy at run time on the client side&lt;br /&gt;
&lt;br /&gt;
Note: Even if we choose to create a Model, it is not a replacement for a Store. It is just that each row of data in the Store would now be a Model instance.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://extjsfocus.blogspot.com/feeds/2930067877674445793/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://extjsfocus.blogspot.com/2011/12/mvc-in-extjs-why-do-we-need-model.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089897966735960548/posts/default/2930067877674445793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089897966735960548/posts/default/2930067877674445793'/><link rel='alternate' type='text/html' href='http://extjsfocus.blogspot.com/2011/12/mvc-in-extjs-why-do-we-need-model.html' title='MVC in ExtJS - Why do we need a Model?'/><author><name>Parthiban Sundaram</name><uri>http://www.blogger.com/profile/17201575300449827879</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeVFYlYIr3iFGK9NwAAiZAdGWBWhylzmX_Ud6UwkKt4A2NmB_Tsh0CZVyV-rdq4KQ5Pos_dAaGMcsknekd59UXVdd5oENkEx77qIyQBypMuQuCmbsH_Ue3etpG-f6FVEB4OP9qlTgyAs4/s72-c/Model.gif" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089897966735960548.post-4415837131916470974</id><published>2011-11-18T08:19:00.001-08:00</published><updated>2011-12-07T08:17:23.533-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="How-To"/><title type='text'>A What-to-read-first Guide for newbies</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
I am a newbie myself and I have been having a&amp;nbsp;hard time&amp;nbsp;trying to find the right articles that would introduce me to ExtJS.&lt;br /&gt;
&lt;br /&gt;
So, here are the articles and the order in which they must be read that I think would help the newbies learn ExtJS in a gradual, incremental way.&lt;br /&gt;
&lt;br /&gt;
BTW, this list is always &quot;under construction&quot; and will be changed as I find new articles and as my own understanding changes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;SETTING UP YOUR MACHINE&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
1. Getting Started&lt;br /&gt;
&lt;a href=&quot;http://www.sencha.com/learn/getting-started-with-ext-js-4&quot;&gt;http://www.sencha.com/learn/getting-started-with-ext-js-4&lt;/a&gt;&lt;br /&gt;
(While you are at it, check out how to set up for IIS &lt;a href=&quot;http://extjsfocus.blogspot.com/2011/11/setting-up-extjs-40-on-iis-7.html&quot;&gt;here&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
2. ExtJS Designer is a great tool for development. Not only does it accelerate development, but it is also a great way to explore ExtJS! So, install this designer first.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;LEARNING ABOUT ExtJS&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
1. ExtJS Essentials&lt;br /&gt;
(Very basic but it serves as good intro to concepts and a feel for ExtJS-based development)&lt;br /&gt;
&lt;a href=&quot;http://www.sencha.com/learn/ext-js-essentials&quot;&gt;http://www.sencha.com/learn/ext-js-essentials&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
2. Ext Designer for ExtJS 4.0&lt;br /&gt;
&lt;a href=&quot;http://cdn.sencha.io/ext-designer/ext-designer-for-ext-js-4-users-guide.pdf&quot;&gt;http://cdn.sencha.io/ext-designer/ext-designer-for-ext-js-4-users-guide.pdf&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
This is a very well-written guide. It has a lot of introductory material that you&#39;d feel grateful for as well as tutorial-like steps that you can take and learn how to use ExtJS. (For following along with the guide, use the data from this link&amp;nbsp;&lt;a href=&quot;http://www.sencha.com/forum/showthread.php?112879-cars.json&quot;&gt;http://www.sencha.com/forum/showthread.php?112879-cars.json&lt;/a&gt;&amp;nbsp;and save it as cars.json)&lt;br /&gt;
&lt;br /&gt;
3. Architecting your app in ExtJS 4.x - part 1&lt;br /&gt;
&lt;a href=&quot;http://www.sencha.com/learn/architecting-your-app-in-ext-js-4-part-1/&quot;&gt;http://www.sencha.com/learn/architecting-your-app-in-ext-js-4-part-1/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
4.&amp;nbsp;Architecting your app in ExtJS 4.x - part 2&lt;br /&gt;
&lt;a href=&quot;http://www.sencha.com/learn/architecting-your-app-in-ext-js-4-part-2&quot;&gt;http://www.sencha.com/learn/architecting-your-app-in-ext-js-4-part-2&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
5. The Data Package -- This article introduces Model, Proxy and Store&lt;br /&gt;
&lt;a href=&quot;http://www.sencha.com/learn/the-data-package/&quot;&gt;http://www.sencha.com/learn/the-data-package/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;ExtJS Samples&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
Check out these samples -- working demos with source code. This is a great way to learn!&lt;br /&gt;
&lt;a href=&quot;http://www.sencha.com/products/extjs/examples/#sample-2&quot;&gt;Samples &amp;amp; Demos | Ext JS 4 | Products | Sencha&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://extjsfocus.blogspot.com/feeds/4415837131916470974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://extjsfocus.blogspot.com/2011/11/what-to-read-first-guide-for-newbies.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089897966735960548/posts/default/4415837131916470974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089897966735960548/posts/default/4415837131916470974'/><link rel='alternate' type='text/html' href='http://extjsfocus.blogspot.com/2011/11/what-to-read-first-guide-for-newbies.html' title='A What-to-read-first Guide for newbies'/><author><name>Parthiban Sundaram</name><uri>http://www.blogger.com/profile/17201575300449827879</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089897966735960548.post-1568004543747440676</id><published>2011-11-16T08:22:00.001-08:00</published><updated>2011-12-07T08:23:00.607-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="How-To"/><title type='text'>Getting Started w/ ExtJS 4</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
1. &amp;nbsp;Create the HTML file&lt;br /&gt;
&lt;br /&gt;
There is possibly only one HTML file per application. This is a deviation from how we design apps in ASP.NET.&lt;br /&gt;
&lt;br /&gt;
In ExtJS, we just have one HTML file and we load and unload different views on the same page.&lt;br /&gt;
&lt;br /&gt;
It is easy to do this using Ext designer. (Download &lt;a href=&quot;http://www.sencha.com/products/designer/download/?ls=Google-AdWords&amp;amp;ss=ExtJS-Brand&amp;amp;gclid=CIye45iv8KwCFQ5T7Aod12SnLg&quot;&gt;here&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
2. Include ext-all-debug.js in your HTML&lt;br /&gt;
&lt;br /&gt;
There are two core Javascript libraries that you must include in your HTML file in order to program using ExtJS. They are: Ext and DomQuery. Both these libraries are part of&amp;nbsp;ext-all-debug.js file (I have commercial evaluation version)&lt;br /&gt;
&lt;br /&gt;
Including this file is your first step.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;head&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;lt;script type=&quot;text/javascript&quot; src=&quot;../ext-all-debug.js&quot;&amp;gt;&amp;lt;/script&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;lt;/head&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
ext-all-debug.js is the non-minified version of ext-all.js which would be shipped along with production code. ext-all-debug.js eases development as it facilitates debugging through the code and making sense of what is happening.&lt;br /&gt;
&lt;br /&gt;
If you are using Ext designer, this is done automatically for you.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://extjsfocus.blogspot.com/feeds/1568004543747440676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://extjsfocus.blogspot.com/2011/11/getting-started.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089897966735960548/posts/default/1568004543747440676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089897966735960548/posts/default/1568004543747440676'/><link rel='alternate' type='text/html' href='http://extjsfocus.blogspot.com/2011/11/getting-started.html' title='Getting Started w/ ExtJS 4'/><author><name>Parthiban Sundaram</name><uri>http://www.blogger.com/profile/17201575300449827879</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089897966735960548.post-972700290444574783</id><published>2011-11-15T05:48:00.000-08:00</published><updated>2011-11-16T05:57:52.140-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Configuration"/><category scheme="http://www.blogger.com/atom/ns#" term="Error"/><title type='text'>Setting up ExtJS 4.0 on IIS 7</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
I downloaded ExtJS 4.0 (Commercial evaluation version) from&amp;nbsp;&lt;a href=&quot;http://www.sencha.com/products/extjs/download?page=a&quot;&gt;http://www.sencha.com/products/extjs/download?page=a&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
1. Copied to c:\inetpub\wwwroot\ExtJS folder.&lt;br /&gt;
(Note: while extracting the zipped files, it would create a ExtJS\ext-js-4.0.7 folder, but i deleted the&amp;nbsp;ext-js-4.0.7 folder after moving all its contents to its parent folder ExtJS. This is just for convenience)&lt;br /&gt;
&lt;br /&gt;
2. Browsed to http://localhost/ExtJS and saw index.html getting rendered without issues. Woo hoo!&lt;br /&gt;
&lt;br /&gt;
While trying to run a sample from (IntroToExt2) from&amp;nbsp;&lt;a href=&quot;http://www.sencha.com/learn/ext-js-essentials&quot;&gt;http://www.sencha.com/learn/ext-js-essentials&lt;/a&gt;, I got the following error:&lt;br /&gt;
Invalid Character&lt;br /&gt;
ext-base.js&lt;br /&gt;
Line: 1&lt;br /&gt;
Code: 0&lt;br /&gt;
Char: 1&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhyDqp2GfYVvroE0kiBaQZcP60hCzXdCWkRLVoMrq-lEmYVhekb_63iiJD4zEM2kk-eRrs3RAas1eDgeIHx0tNcKVRPquGO32FJDNxd4GXP16dSMDEgMw1ulhbqwskQSsSmtfNDy2SRNk/s1600/ext-base+js+error.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;214&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhyDqp2GfYVvroE0kiBaQZcP60hCzXdCWkRLVoMrq-lEmYVhekb_63iiJD4zEM2kk-eRrs3RAas1eDgeIHx0tNcKVRPquGO32FJDNxd4GXP16dSMDEgMw1ulhbqwskQSsSmtfNDy2SRNk/s320/ext-base+js+error.gif&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Not sure exactly why this error occurred. Googling for answers, I found this link:&amp;nbsp;&lt;a href=&quot;http://www.rahulsingla.com/blog/2011/04/extjs-4-running-docs-over-iis-in-windows&quot;&gt;http://www.rahulsingla.com/blog/2011/04/extjs-4-running-docs-over-iis-in-windows&lt;/a&gt;. Following the instructions there, I added .json MIME type to IIS and that solved the issue!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://extjsfocus.blogspot.com/feeds/972700290444574783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://extjsfocus.blogspot.com/2011/11/setting-up-extjs-40-on-iis-7.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089897966735960548/posts/default/972700290444574783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089897966735960548/posts/default/972700290444574783'/><link rel='alternate' type='text/html' href='http://extjsfocus.blogspot.com/2011/11/setting-up-extjs-40-on-iis-7.html' title='Setting up ExtJS 4.0 on IIS 7'/><author><name>Parthiban Sundaram</name><uri>http://www.blogger.com/profile/17201575300449827879</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhyDqp2GfYVvroE0kiBaQZcP60hCzXdCWkRLVoMrq-lEmYVhekb_63iiJD4zEM2kk-eRrs3RAas1eDgeIHx0tNcKVRPquGO32FJDNxd4GXP16dSMDEgMw1ulhbqwskQSsSmtfNDy2SRNk/s72-c/ext-base+js+error.gif" height="72" width="72"/><thr:total>0</thr:total></entry></feed>