📄 ext.data.jsonreader.html
字号:
<!--Mock<link rel="stylesheet" type="text/css" href="http://localhost/ext/resources/css/ext-all.css" /><link rel="stylesheet" type="text/css" href="http://localhost/ext/doc/resources/docs.css"/><link rel="stylesheet" type="text/css" href="http://localhost/ext/doc/resources/style.css"/>--><style type="text/css"> body { overflow: scroll; } /** .mdesc .long { display: block; } */</style><!-- End Mock--><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><div class="body-wrap"> <div class="top-tools"> <a class="inner-link" href="#Ext.data.JsonReader-props"><img src="/images/s.gif" class="item-icon icon-prop">Properties</a><a class="inner-link" href="#Ext.data.JsonReader-methods"><img src="/images/s.gif" class="item-icon icon-method">Methods</a><a class="inner-link" href="#Ext.data.JsonReader-events"><img src="/images/s.gif" class="item-icon icon-event">Events</a><a class="inner-link" href="#Ext.data.JsonReader-configs"><img src="/images/s.gif" class="item-icon icon-config">Config Options</a><a class="bookmark" href="../docs/?class=Ext.data.JsonReader"><img src="/images/s.gif" class="item-icon icon-fav">Direct Link</a> </div><h1>Class Ext.data.JsonReader</h1> <table cellspacing="0"> <!-- <tr> <td class="label"> Package: </td> <td class="hd-info"> </td> </tr> --> <tr> <td class="label"> Defined In: </td> <td class="hd-info"> JsonReader.js </td> </tr> <tr> <td class="label"> Class: </td> <td class="hd-info"> Ext.data.JsonReader </td> </tr> <tr> <td class="label"> Extends: </td> <td class="hd-info"> Ext.data.DataReader </td> </tr> </table> <div class="description"> Data reader类接受一个JSON响应结果后,创建一个由<a href="###" onClick="alert('Ext.data.Record');">Ext.data.Record</a>对象组成的数组,
数组内的每个对象都是<a href="###" onClick="alert('Ext.data.Record');">Ext.data.Record</a>构造器负责映射(mappings)的结果。
<br>
<p>
示例代码:
<pre><code>
var Employee = Ext.data.Record.create([
{name: 'firstname'}, // 映射了Record的"firstname" 字段为行对象的同名键名称
{name: 'job', mapping: 'occupation'} // 映射了"job"字段为行对象的"occupation"键
]);
var myReader = new Ext.data.JsonReader({
totalProperty: "results", // 该属性是指定记录集的总数(可选的)
root: "rows", // 该属性是指定包含所有行对象的数组
id: "id" // 该属性是指定每一个行对象中究竟哪一个是记录的ID字段(可选的)
}, Employee);
</code></pre>
<p>
形成这种形式的JSON对象:
<pre><code>
{
results: 2,
rows: [
{ id: 1, firstname: 'Bill', occupation: 'Gardener' }, // 行对象
{ id: 2, firstname: 'Ben' , occupation: 'Horticulturalist' } // 另外一个行对象
]
}
</code></pre>
<p>
随时都可以改变JsonReader的元数据,只要在数据对象中放置一个<b><tt>metaData</tt></b>的属性。
一旦将该属性对象检测出来,就会触发Reader所使用的{@link Ext.data.Store Store}对象身上的{@link Ext.data.Store#metachange metachange}事件。</p>
<p>属性<b><tt>metaData</tt></b>可包含任何为该类服务的配置选项。
还可以包含<b><tt>fields</tt></b>的属性,会给JsonReader用作<a href="###" onClick="alert('Ext.data.Record#create');">Ext.data.Record#create</a>的参数,以便配置所产生的Records布局。<p>
配合使用<b><tt>metaData</tt></b>属性,和Store的{@link Ext.data.Store#metachange metachange}事件,
就可产生“基于Store”控制的自我初始化。
metachange的处理函数会解析<b><tt>metaData</tt></b>属性(包含了任意的用户制定属性)来执行所需的配置操作,
当然还有用于定义字段的<b><tt>metaData.fields</tt></b>数组。</p>
<p>
要创建无须好像上一例那样配置的Record构造器的JsonReader对象,你可以采取这样的机制:
</p><pre><code>
var myReader = new Ext.data.JsonReader();
</code></pre>
<p>
可由数据库返回reader所需的配置信息,叫做metaData属性,只需要在第一次请求的时候返回便可,而且metaData属性可以实际数据并列放在一起:
</p><pre><code>
{
metaData: {
totalProperty: 'results',
root: 'rows',
id: 'id',
fields: [
{name: 'name'},
{name: 'occupation'}
]
},
results: 2,
rows: [
{ 'id': 1, 'name': 'Bill', occupation: 'Gardener' },
{ 'id': 2, 'name': 'Ben', occupation: 'Horticulturalist' }
]
}
</code></pre>
@cf </div> <div class="hr"> </div> <a id="Ext.data.JsonReader-configs"></a> <h2>配置项</h2> <table cellspacing="0" class="member-table"> <tr> <th class="sig-header" colspan="2"> 配置项 </th> <th class="msource-header"> 定义者 </th> </tr> <tr class="config-row expandable"> <td class="micon"> <a class="exi" href="#expand"> </a> </td> <td class="sig"> <a id="totalProperty-header"></a> <b>totalProperty</b> : String <div class="mdesc"> <div class="short"> 记录集的总数的属性名称。如果是需要分页的话该属性就必须指定。 </div> <div class="long"> 记录集的总数的属性名称。如果是需要分页的话该属性就必须指定。 </div> </div> </td> <td class="msource"> JsonReader </td> </tr> <tr class="config-row expandable"> <td class="micon"> <a class="exi" href="#expand"> </a> </td> <td class="sig"> <a id="root-header"></a> <b>root</b> : String <div class="mdesc"> <div class="short"> 指定包含所有行对象的数组 </div> <div class="long"> 指定包含所有行对象的数组 </div> </div> </td> <td class="msource"> JsonReader </td> </tr> </table> <a id="Ext.data.JsonReader-props"></a> <h2>公告属性</h2> <table cellspacing="0" class="member-table"> <tr> <th colspan="2"> 属性 </th> <th> 定义者 </th> </tr> <tr class="property-row inherited expandable"> <td class="micon"> <a class="exi" href="#expand"> </a> </td> <td class="sig"> <a id="meta
-activeItem"></a> <b> meta
: meta</b> <div class="mdesc"> <div class="short">
送入构造器的DataReader的配置元数据。
</div> <div class="long">
送入构造器的DataReader的配置元数据。
</div> </div> </td> <td class="msource"> <!--如果这不是同个namespace下--><a ext:cls="Ext.data.DataReader" ext:member="#method-meta
" href="output/Ext.data.DataReader.html#method-meta
"> DataReader </a> </td> </tr> <tr class="property-row inherited expandable"> <td class="micon"> <a class="exi" href="#expand"> </a> </td> <td class="sig"> <a id="jsonData-activeItem"></a> <b> jsonData: this.</b> <div class="mdesc"> <div class="short">
异步通信完毕后,保留原始JSON数据以便将来由必要的用途。如果没有... </div> <div class="long">
异步通信完毕后,保留原始JSON数据以便将来由必要的用途。如果没有数据加载,那么会抛出一个load异常,该属性为undefined。
</div> </div> </td> <td class="msource"> JsonReader </td> </tr> </table> <a id="Ext.data.JsonReader-methods"></a> <h2>公共方法</h2> <table cellspacing="0" class="member-table"> <tr> <th class="sig-header" colspan="2"> 方法 </th> <th class="msource-header"> 定义者 </th> </tr> <tr class="method-row expandable"> <td class="micon"> <a class="exi" href="#expand"> </a>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -