ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>国产福利电影在线,青青草一区二区,欧洲成人avhttp://www.aygfsteel.com/super2/category/35591.html学习学习zh-cnWed, 10 Dec 2008 10:02:34 GMTWed, 10 Dec 2008 10:02:34 GMT60Ext列宽度不够,需要tip的解å†?/title><link>http://www.aygfsteel.com/super2/archive/2008/12/10/245468.html</link><dc:creator>淘声依旧</dc:creator><author>淘声依旧</author><pubDate>Wed, 10 Dec 2008 04:57:00 GMT</pubDate><guid>http://www.aygfsteel.com/super2/archive/2008/12/10/245468.html</guid><wfw:comment>http://www.aygfsteel.com/super2/comments/245468.html</wfw:comment><comments>http://www.aygfsteel.com/super2/archive/2008/12/10/245468.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/super2/comments/commentRss/245468.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/super2/services/trackbacks/245468.html</trackback:ping><description><![CDATA[当一个列用render渲染的时候,如果列宽度不够,内容多出的部分会被隐藏,无法昄¡¤ºã€‚这旉™œ€è¦ä¸€ä¸ªé¼ æ ‡æ»‘˜q‡æ½Cºå…¨éƒ¨å†…容的tip功能ã€?br /> 渲染的函数写成如下:<br /> function renderHallName(value, meta, rec, rowIdx, colIdx, ds){<br />     return '<div ext:qtitle="" ext:qtip="' + value + '">'+ value +'</div>';<br /> }<br /> ™å‰™ƒ¨éœ€è¦åŠ å…¥Ext.QuickTips.init();<br /> qtitle代表tip的标é¢? qtip代表内容。这旉™¼ æ ‡åˆ’˜q‡å°±ä¼šå‡ºçŽ°æ½Cºï¼<br /> <br /><img src ="http://www.aygfsteel.com/super2/aggbug/245468.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/super2/" target="_blank">淘声依旧</a> 2008-12-10 12:57 <a href="http://www.aygfsteel.com/super2/archive/2008/12/10/245468.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Extçš„Doctype问题http://www.aygfsteel.com/super2/archive/2008/12/10/245465.html淘声依旧淘声依旧Wed, 10 Dec 2008 04:49:00 GMThttp://www.aygfsteel.com/super2/archive/2008/12/10/245465.htmlhttp://www.aygfsteel.com/super2/comments/245465.htmlhttp://www.aygfsteel.com/super2/archive/2008/12/10/245465.html#Feedback0http://www.aygfsteel.com/super2/comments/commentRss/245465.htmlhttp://www.aygfsteel.com/super2/services/trackbacks/245465.html 如果ç”?lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">则没有这个问题,但是在IE6下会出现双™¾¹æ»šåŠ¨æ ç©ºç™½ã€?br /> 以上在IE7,FF3上都不会出现问题åQŒåªæœ‰IE6会有问题ã€?br />
解决æ–ÒŽ³•åQšæŠŠext-all.css里面çš?x-grid3-header-offset{padding-left:1px;width:10000px;}注释掉就解决äº?br />


淘声依旧 2008-12-10 12:49 发表评论
]]>
Extjs 处理 Date 对象http://www.aygfsteel.com/super2/archive/2008/11/21/241785.html淘声依旧淘声依旧Fri, 21 Nov 2008 00:46:00 GMThttp://www.aygfsteel.com/super2/archive/2008/11/21/241785.htmlhttp://www.aygfsteel.com/super2/comments/241785.htmlhttp://www.aygfsteel.com/super2/archive/2008/11/21/241785.html#Feedback0http://www.aygfsteel.com/super2/comments/commentRss/241785.htmlhttp://www.aygfsteel.com/super2/services/trackbacks/241785.html

java里面旉™—´¾cÕdž‹è½¬æ¢æˆjson数据ž®±æˆ˜q™æ ·å•?/p>

"modifyTime":{"date":30,"day":3,"hours":15,"minutes":14,"month":3,"nanos":0,"seconds"

:38,"time":1209539678000,"timezoneOffset":-480,"year":108}
在gridpanel里面ž®×ƒ¼šæ˜„¡¤ºæˆ[object,object]

在store里面˜q™æ ·å†?/p>

{
name : 'createTime',
type : 'date',
mapping : 'createTime.time',
dateFormat : 'time'
}

在ColumnModel里面˜q™æ ·å†?/p>

{
header : "创徏旉™—´",
sortable : true,
dataIndex : 'createTime',
renderer : Ext.util.Format.dateRenderer('Y-m-d H:i:s')
}

ž®×ƒ¼šæ˜„¡¤ºæˆä½ æƒŒ™¦çš„æ ¼å¼ä¸ç”¨åœ¨åŽå°å¤„理成字½W¦ä¸²å•¦ã€?/p>

淘声依旧 2008-11-21 08:46 发表评论
]]>
[转蝲]EXT核心API详解(十九)Ext.widgets-grid(1)http://www.aygfsteel.com/super2/archive/2008/10/30/237582.html淘声依旧淘声依旧Thu, 30 Oct 2008 04:26:00 GMThttp://www.aygfsteel.com/super2/archive/2008/10/30/237582.htmlhttp://www.aygfsteel.com/super2/comments/237582.htmlhttp://www.aygfsteel.com/super2/archive/2008/10/30/237582.html#Feedback0http://www.aygfsteel.com/super2/comments/commentRss/237582.htmlhttp://www.aygfsteel.com/super2/services/trackbacks/237582.htmlExt.grid.ColumnModel
用于定义Grid的列
用例
var colModel = new Ext.grid.ColumnModel([
    {header: "Ticker", width: 60, sortable: true},
    {header: "Company Name", width: 150, sortable: true}
    ]);

回到ColumnModel,它的构造参数是一个config¾l„成的数¾l?其中config定义为{
    align : String    //css中的寚w½æ–¹å¼
    dataIndex : String    //要绑定的Store之Record字段å?br />     fixed : Boolean    //如果为真列宽不能被改å?br />     header : String    //头部昄¡¤ºçš„名¿U?br />     hidden : Boolean    //隐藏本列
    id : String    //主要用于样式选择,如果已定义此属æ€?那么列所在的单元æ ég¼šå®šä¹‰classä¸?x-grid-td-id
    renderer : Function    //可以使用˜q™ä¸ªæž„造参数格式化数据
    resizable : Boolean    //可调节尺å¯?br />     sortable : Boolean    // 可排åº?br />     width : Number    //宽度
}
å? 外虽然未¾lå£°æ˜?但config事实上支持editor:Ext.form.Field属æ€?˜q™ç‚¹ä¼šåœ¨Ext.grid.EditorGridPanel 中看åˆ?另外ä¸ÞZº†æ‰©å±•grid的表çŽ?我们通常也需要自定义åˆ?™åÞZ¾¿æä¸€ä¸ªæœ‰­‘£çš„åˆ?Ext.grid.RowNumberer,˜q™æ˜¯Ext为我们扩展好 的一个简单列,它的构造很½Ž€å?也没有其它的æ–ÒŽ³•和属æ€?Ext.grid.RowNumberer({ header : String, sortable : Boolean, width : Number})如果使用å®?上例可改ä¸?br /> var colModel = new Ext.grid.ColumnModel([
    new Ext.grid.RowNumberer(),
    {header: "Ticker", width: 60, sortable: true},
    {header: "Company Name", width: 150, sortable: true}
    ]);
属æ€?br /> defaultSortable : Boolean    //默认可排åº?br /> defaultWidth : Number    //默认的宽åº?br /> setConfig : Object    //˜q”回构造时的config参数

æ–ÒŽ³•
ColumnModel( Object config )
构�br />
getCellEditor( Number colIndex, Number rowIndex ) : Object
得到指定行列的编辑�br /> getColumnById( String id ) : Object
得到指定id的列对象
getColumnCount() : Number
得到列数
getColumnHeader( Number col ) : String
得到列头部文�br /> getColumnId( Number index ) : String
得到列id
getColumnTooltip( Number col ) : String
得到列提½C?br /> getColumnWidth( Number col ) : Number
列宽
getColumnsBy( Function fn, [Object scope] ) : Array
通过fn扑ֈ°æŒ‡å®šçš„列
getDataIndex( Number col ) : Number
得到指定列的数据¾l‘定对象在store中的序号
getIndexById( String id ) : Number
通过id扑ֺå?br /> getRenderer( Number col ) : Function
得到¾l˜åˆ¶å™?br /> getTotalWidth( Boolean includeHidden ) : Number
æ€Èš„宽度
hasListener( String eventName ) : Boolean
有事件侦听�
isCellEditable( Number colIndex, Number rowIndex ) : Boolean
指定行列可编�
isFixed() : void
应该˜q”回Boolean,充满?
isHidden( Number colIndex ) : Boolean
指定列隐�
isResizable() : Boolean
可重写义大小
isSortable( Number col ) : Boolean
可排�
setColumnHeader( Number col, String header ) : void
讄¡½®æŒ‡å®šåˆ—列å¤?br /> setColumnTooltip( Number col, String tooltip ) : void
讄¡½®æŒ‡å®šåˆ—提½C?br /> setColumnWidth( Number col, Number width ) : void
讄¡½®æŒ‡å®šåˆ—宽åº?br /> setConfig( Array config ) : void
重设config
setDataIndex( Number col, Number dataIndex ) : void
讄¡½®æŒ‡å®šåˆ—的数据æº?br /> setEditable( Number col, Boolean editable ) : void
讄¡½®æŒ‡å®šåˆ—是否可¾~–辑
setEditor( Number col, Object editor ) : void
为指定列讄¡½®¾~–辑å™?br /> setHidden( Number colIndex, Boolean hidden ) : void
讄¡½®æŒ‡å®šåˆ—隐è—?br /> setRenderer( Number col, Function fn ) : void
为指定列讄¡½®è¾“出æ–ÒŽ³•

事äšg
columnmoved : ( ColumnModel this, Number oldIndex, Number newIndex )
configchanged : ( ColumnModel this )
headerchange : ( ColumnModel this, Number columnIndex, String newText )
hiddenchange : ( ColumnModel this, Number columnIndex, Boolean hidden )
widthchange : ( ColumnModel this, Number columnIndex, Number newWidth )

Ext.grid.PropertyColumnModel
¾l§æ‰¿è‡ªExt.grid.ColumnModel,䏓䨓Ext.grid.PropertyGrid而设è®?构造有点不å?不过˜q™ä¸ªapi文档不知道谁写的,ext2中好象没有gridäº?
PropertyColumnModel( Ext.grid.Grid grid, Object source )

Ext.grid.GridView
为GridPanel提供视图支持
config{
    autoFill : Boolean
    enableRowBody : Boolean
    forceFit : Boolean
}

属æ€?br /> columnsText : String    //列文æœ?br /> scrollOffset : Number    //滚动步行
sortAscText : String    //正序文本
sortClasses : Array    //正序和倒序时头部列使用的样å¼?默认为["sort-asc", "sort-desc"]
sortDescText : String    //倒序文本

æ–ÒŽ³•
GridView( Object config )
构�br /> focusCell( Number row, Number col ) : void
指定½W¬row行第col列得到焦ç‚?br /> focusRow( Number row ) : void
选中½W¬rowè¡?br /> getCell( Number row, Number col ) : HtmlElement
得到指定行列的htmlelement对象
getHeaderCell( Number index ) : HtmlElement
得到指定列的表单头对�br /> getRow( Number index ) : HtmlElement
得到指定行的htmlelement对象
getRowClass( Record record, Number index, Object rowParams, Store ds ) : void
//得到指定行的样式?郁闷的是没有能在GridView.js中找到此æ–ÒŽ³•的定ä¹?br /> refresh( [Boolean headersToo] ) : void
涮新昄¡¤º
scrollToTop() : void
滚动到头�br />
Ext.grid.GroupingView
¾l§æ‰¿è‡ªExt.grid.GridView,用于数据分组 ,应用äº?br /> config{
emptyGroupText : String        //½Iºçš„分组昄¡¤ºæ–‡æœ¬
enableGroupingMenu : Boolean    //允许分组菜单
enableNoGroups : Boolean    //允许分组/不分¾l„显½C?br /> groupTextTpl : String        //˜q™æ˜¯ä¸ªæ¨¡æ?分组™å¹çš„内容依此昄¡¤º,语法参见模板,
hideGroupedColumn : Boolean    //隐藏分组åˆ?br /> startCollapsed : Boolean    //开始时收è“v,默认为假
}
另外虽然没有在api中说�但groupByText和showGroupsText属性也是可以在config中指定的
æ–ÒŽ³•
GroupingView( Object config )
构�br /> getGroupId( String value ) : void
取得指定值的分组id,为toggleGroup而准备的æ–ÒŽ³•
toggleAllGroups( [Boolean expanded] ) : void
æ”¶è“v或展开所有的分组
toggleGroup( String groupId, [Boolean expanded] ) : void
展开或收èµähŒ‡å®šçš„分组,例grid.view.toggleGroup(grid.view.getGroupId('Horticulturalist'));会展开或收起分¾l„å­—ŒDµå€égØ“'Horticulturalist'的分¾l?br /> Ext.onReady(function()...{
           
//定义数组
        var arr=[ ['Bill', 'Gardener'], [ 'Ben', 'Horticulturalist'],['ä½?/span>', 'Gardener'],['ä»?/span>', 'Gardener'],[ 'æˆ?/span>', 'Horticulturalist'] ];
       
var reader = new Ext.data.ArrayReader(
      
           
...{},
       
//定义数组到record的映ž®„å…³¾p?/span>
           [
            
...{name: 'name'},        
            
...{name: 'occupation', mapping: 1}   
           ]
        );
       
//生成元数�/span>
         var store=new Ext.data.Store(...{
                reader:reader
            }
);
        store.loadData(arr);
      
       
//现在配置列信æ?nbsp;  
        var col=new Ext.grid.ColumnModel([
            
new Ext.grid.RowNumberer(...{header:'序号',width:30}),
            
...{header:'姓名',sortable: true,dataIndex:'name'},
            
...{header:'职业',sortable: true,dataIndex:'occupation'}
        ]);     
       
//配置视图信息
        var view=new Ext.grid.GridView(...{forceFit:true,sortAscText :'正序', sortDescText :'倒序'});
        view.columnsText
='列显½C?隐藏';
       
//现在我们有一个可用的gridäº?别骄傲这只是½W¬ä¸€æ­?nbsp;      
        var grid=new Ext.grid.GridPanel(...{
            el:Ext.getBody(),
            height:
200,
            width:
400,
            store:store,
            cm:col,
            view:view
            }
);   
          
        grid.render();  
           
//现在我们需要一个GroupingStore
         var gstore=new Ext.data.GroupingStore(...{
          reader:reader,
          groupField:
'name',
          groupOnSort:
true,
           sortInfo:
...{field: 'occupation', direction: "ASC"} //使用GroupingStoreæ—¶å¿…™åÀLŒ‡å®šsortInfo信息
       }
);
       gstore.loadData(arr);   
             
       
//扩展一下我们的grid,让他能分¾l„当然会更酷一ç‚?nbsp;   
        var ggrid = new Ext.grid.GridPanel(...{
            ds: gstore,
            cm:col,
             view:
new Ext.grid.GroupingView(...{
                forceFit:
true,
                sortAscText :
'正序',
                sortDescText :
'倒序',
                columnsText:
'列显½C?隐藏',
                groupByText:
'依本列分¾l?/span>',
                showGroupsText:
'分组昄¡¤º',
                groupTextTpl:
'{text} ({[values.rs.length]} 条记�'
            }
),
            frame:
true,
            width:
400,
            height:
300,
            collapsible:
true,
            animCollapse:
false,
            renderTo:Ext.getBody()
       }
);        
      
        }
);

]]>
[转蝲]EXT核心API详解(二十)Ext.widgets-grid(2) http://www.aygfsteel.com/super2/archive/2008/10/30/237583.html淘声依旧淘声依旧Thu, 30 Oct 2008 04:26:00 GMThttp://www.aygfsteel.com/super2/archive/2008/10/30/237583.htmlhttp://www.aygfsteel.com/super2/comments/237583.htmlhttp://www.aygfsteel.com/super2/archive/2008/10/30/237583.html#Feedback0http://www.aygfsteel.com/super2/comments/commentRss/237583.htmlhttp://www.aygfsteel.com/super2/services/trackbacks/237583.htmlExt.grid.EditorGridPanel
可编辑数据表�br /> Config {
clicksToEdit : Number   //点几‹Æ¡å¼€å§‹ç¼–è¾?默认ä¸?
}

æ–ÒŽ³•
EditorGridPanel()
æž„é€?åº”äØ“ EditorGridPanel(Object config)
startEditing( Number rowIndex, Number colIndex ) : void
stopEditing() : void
开始停止编�br />
事äšg
afteredit : ( Object e )
beforeedit : ( Object e )
validateedit : ( Object e )

下面我们扩展一下刚才的½CÞZ¾‹åº”用一下EditorGridPanel//定义数组
var arr=[
    ['Bill', 'Gardener','2007-01-02',-10,true],
    [ 'Ben', 'Horticulturalist','2007-01-03',-20.1,false],
    ['ä½?, 'Gardener','2007-02-02',0,true],
    ['ä»?, 'Gardener','2007-01-04',13,false],
    [ 'æˆ?, 'Horticulturalist','2007-01-05',15.2,false]
    ];
var reader = new Ext.data.ArrayReader(
   ...{},
//定义数组到record的映ž®„å…³¾p?br />    [
    ...{name: 'name'},        
    ...{name: 'occupation', mapping: 1},
    ...{name:'date',type: 'date',dateFormat: 'Y-m-d'}, //用指定的格式转换日期
    ...{name:'float',type:'float'},
    ...{name:'bool',type:'bool'}
   ]
);
//生成元数�br /> var store=new Ext.data.Store(...{
    reader:reader
    });
store.loadData(arr);

//自定义可¾~–辑åˆ?从ext的示例抄çš?但是却要init郁闷
Ext.grid.CheckColumn = function(config)...{
    Ext.apply(this, config);
    if(!this.id)...{
    this.id = Ext.id();
    }
    this.renderer = this.renderer.createDelegate(this);
};
//重写了三个方�捕捉mousedown修改数据
Ext.grid.CheckColumn.prototype =...{
init : function(grid)...{
    this.grid = grid;
    this.grid.on('render', function()...{
    var view = this.grid.getView();
    view.mainBody.on('mousedown', this.onMouseDown, this);
    }, this);
},
onMouseDown : function(e, t)...{
    if(t.className && t.className.indexOf('x-grid3-cc-'+this.id) != -1)...{
    e.stopEvent();
    var index = this.grid.getView().findRowIndex(t);
    var record = this.grid.store.getAt(index);
    record.set(this.dataIndex, !record.data[this.dataIndex]);
    }
},

renderer : function(v, p, record)...{
    p.css += ' x-grid3-check-col-td';
    return '<div class="x-grid3-check-col'+(v?'-on':'')+' x-grid3-cc-'+this.id+'"> </div>';
}
}

//¾l‘定到bool字段
var checkColumn=new Ext.grid.CheckColumn(...{
   header: "布尔å€?,
   dataIndex: 'bool'
});
/**//*
    现在配置列信æ?ä¸ÞZº†æœ¬åœ°åŒ–日期选择å™?请包含ext-lang-zh_CN.js,òq¶ä¿®æ”¹Date.dayNames = ["æ—?,"一","äº?,"ä¸?,"å›?,"äº?,"å…?];
    在Ext.apply(Ext.DatePicker.prototype, {...})中加入okText:"¼‹®å®š",cancelText:"取消";
*/
var col=new Ext.grid.ColumnModel([
    new Ext.grid.RowNumberer(...{header:'序号',width:30}),
    ...{header:'姓名',sortable: true,dataIndex:'name'},
    ...{header:'职业',sortable: true,dataIndex:'occupation'},
    ...{  
    id:'datacol',
    header:'日期',
    sortable:true,
    dataIndex:'date',renderer: Ext.util.Format.dateRenderer('Yòq´m月dæ—?),//格式化显½C?br />     editor:new Ext.form.DateField()
     },
    ...{header:'æ•°å€? ',sortable:true,dataIndex:'float',renderer:formatFloat,align: 'right',editor:new Ext.form.NumberField()}, //自定义显½Cºæ–¹å¼?叛_¯¹é½?br />     checkColumn //˜q™ä¸ª"选择框列"看è“v来的¼‹®æ¼‚亮些,其实是通过修改背景囄¡‰‡å®žçްçš?br /> ]);

//配置视图信息
var view=new Ext.grid.GridView(...{forceFit:true,sortAscText :'正序', sortDescText :'倒序'});
view.columnsText='列显½C?隐藏';
//现在我们看看可编辑的数据表格能用了吗       
var grid=new Ext.grid.EditorGridPanel(...{
    el:Ext.getBody(),
    height:200,
    width:400,
    store:store,
    cm:col,
    view:view
    });   
//ä¸ÞZ»€ä¹ˆåŽŸä¾‹ä¸éœ€è¦init?
checkColumn.init(grid);
grid.render();

function formatFloat(val)...{
    var bgcolor;
    if(val>0)...{
    bgcolor='#FF0000';
    }else if(val<0)...{
    bgcolor='#00FF00';
    }
    else...{
    bgcolor='#000000';
    }
    return( ['<span style="color:',bgcolor,'">',val,'</span>'].join(''));
}

Ext.grid.PropertyGrid
属性表æ ?¾l§æ‰¿è‡ªEditorGridPanel,用习惯ide的用户都会喜‹Æ¢è¿™ä¸ªç®€å•的属性表æ ?

config{
   customEditors : Object   //自定义属性编辑器
      source : Object   //数据æº?br /> }

æ–ÒŽ³•
PropertyGrid( Object config )
构�br />
getSource() : Object
setSource( Object source ) : void
得到和设¾|®æ•°æ®æº

事äšg
beforepropertychange : ( Object source, String recordId, Mixed value,
propertychange : ( Object source, String recordId, Mixed value, Mixed

同样用一个简单的½CÞZ¾‹æ¥å®ŒæˆPropertyGrid的学ä¹?br /> var grid=new Ext.grid.PropertyGrid(...{
    el:Ext.getBody()
    ,height:200
    ,width:400
    ,viewConfig : ...{forceFit:true}
    ,customEditors:...{
        'òq´é¾„':new Ext.grid.GridEditor(new Ext.form.NumberField())
    }
    ,source:...{
        '姓名':'blackant'
        ,'òq´é¾„':100
    }
});

grid.source['性别']='�;
grid.customEditors['性别']=new Ext.grid.GridEditor(new Ext.form.ComboBox(...{
        editable:false
        ,triggerAction: 'all'
        ,store: new Ext.data.SimpleStore(...{
            fields: ['gender'],
            data : [['ç”?],['å¥?]]
        })
        ,displayField:'gender'
        ,forceSelection:true
        ,mode:'local'
}));
grid.render();

选择模式都很å®ÒŽ˜“使用,略过,至于其它的扩å±?有时间再慢慢研究äº?½W¬ä¸€æ­¥å…ˆä»¥å­¦ä¼šä‹Éç”¨äØ“ä¸?/div>

淘声依旧 2008-10-30 12:26 发表评论
]]>
[转蝲]EXT核心API详解(十八) Ext.Toolbarhttp://www.aygfsteel.com/super2/archive/2008/10/30/237581.html淘声依旧淘声依旧Thu, 30 Oct 2008 04:25:00 GMThttp://www.aygfsteel.com/super2/archive/2008/10/30/237581.htmlhttp://www.aygfsteel.com/super2/comments/237581.htmlhttp://www.aygfsteel.com/super2/archive/2008/10/30/237581.html#Feedback0http://www.aygfsteel.com/super2/comments/commentRss/237581.htmlhttp://www.aygfsteel.com/super2/services/trackbacks/237581.html
æ–ÒŽ³•
Toolbar( Object/Array config )
构�br />
add( Mixed arg1, Mixed arg2, Mixed etc. ) : void
增加元素
可以�
1:Ext.Toolbar.Button            相当于addButton
2:HtmlElement                相当于addElement
3:Field                    相当于addField
4:Item                    相当于addItem
5:String                相当于addText
6:'separator'æˆ?-'            相当于addSeparator
7:''                    相当于addSpacer
8:'->'                    相当于addFill

addButton( Object/Array config ) : Ext.Toolbar.Button/Array
æ·ÕdŠ Ext.Toolbar.Button/SplitButton对象,å…¶å®žå› äØ“Ext.Toolbar.Buttonå’ŒExt.Button用è“v来没什么区åˆ?而且Toolbar两者都支持åQŒæˆ‘实验时没发现使用上有什么不å?br />
addDom( Object config ) : Ext.Toolbar.Item
æ·ÕdŠ DOM节点

addElement( Mixed el ) : Ext.Toolbar.Item
æ·ÕdŠ Element对象
addField( Ext.form.Field field ) : Ext.ToolbarItem
æ·ÕdŠ Ext.form.Field对象

addFill() : Ext.Toolbar.Fill
æ·ÕdŠ ä¸€ä¸ªæ’‘æ»¡å·¥å…äh¡çš„空白元ç´?br />
addItem( Ext.Toolbar.Item item ) : Ext.Toolbar.Item
æ·Õd›žExt.Toolbar.Item对象

addSeparator() : Ext.Toolbar.Item
æ·ÕdŠ ä¸€ä¸ªåˆ†éš”å…ƒç´?相当于addItem(new Ext.Toolbar.Separator());

addSpacer() : Ext.Toolbar.Spacer
æ·ÕdŠ ä¸€ä¸ªç©ºç™½å…ƒç´?相当于addItem(new Ext.Toolbar.Spacer());

addText( String text ) : Ext.Toolbar.Item
æ·ÕdŠ æ–‡æœ¬å…ƒç´ ,相当于addItem(new Ext.Toolbar.TextItem(text));

insertButton( Number index, Object/Ext.Toolbar.Item/Ext.Toolbar.Button button ) : Ext.Toolbar.Button/Item
在第index个元素之前插入button对象

Ext.Toolbar.Item
工具栏元素基¾c?br />
Toolbar.Item( HTMLElement el )
构�br />
destroy() : void
销�br />
disable() : void
enable() : void
可用åQç¦ç”?br />
focus() : void
得到焦点 

getEl() : HTMLElement
得到当前DOM对象

setVisible( Boolean visible ) : void
show() : void
hide() : void
昄¡¤ºéšè—

Ext.Toolbar.Separator
¾l§æ‰¿è‡ªitem,工具栏分隔符

Ext.Toolbar.Spacer
¾l§æ‰¿è‡ªitem,工具栏空白元ç´?br />
Ext.Toolbar.TextItem
¾l§æ‰¿è‡ªitem,工具栏文本元ç´?br />
Ext.Toolbar.Fill
¾l§æ‰¿è‡ªSpacer,工具栏空白元ç´?撑满工具æ ?br />
½Ž€å•çš„½CÞZ¾‹
var tb = new Ext.Toolbar(...{width:400});
//在add之前先render,必要,不然会报�/在add之前先render,必要
tb.render(Ext.getBody());


tb.addText(
'请选择旉™—´');
tb.add(
new Ext.form.DateField(...{ //DateField
     fieldLabel:'DateField',
     format:
'Y-m-d',
     disabledDays:[
0,6]
     }
)
);
tb.addButton(
    
new Ext.Toolbar.Button(...{
     text:
'button',
     handler:
function(item)...{
         Ext.MessageBox.alert(
"toolbar","您点å‡ÖMº†"+item.text)
     }

     }
)
);
tb.addSpacer();
tb.addSeparator();
tb.addFill();
tb.add(
new Ext.SplitButton(...{
     handler:
function(item)...{
         Ext.MessageBox.alert(
"点击事äšg",String.format("您选择了{0}",item.text));
         }
,
     arrowTooltip :
"更多",
     text:
'按我',
     menu:
new Ext.menu.Menu(...{
         id:
'mainMenu',
       
         items: [
        
...{
             text:
'菜单™å?'
         }
,
        
...{
             text:
'菜单™å?'
         }
]
     }
)
     }
)
);


淘声依旧 2008-10-30 12:25 发表评论
]]>
[转蝲]EXT核心API详解(十七) Ext.menu.Menuhttp://www.aygfsteel.com/super2/archive/2008/10/30/237580.html淘声依旧淘声依旧Thu, 30 Oct 2008 04:24:00 GMThttp://www.aygfsteel.com/super2/archive/2008/10/30/237580.htmlhttp://www.aygfsteel.com/super2/comments/237580.htmlhttp://www.aygfsteel.com/super2/archive/2008/10/30/237580.html#Feedback0http://www.aygfsteel.com/super2/comments/commentRss/237580.htmlhttp://www.aygfsteel.com/super2/services/trackbacks/237580.html 菜单对象

config{
    allowOtherMenus : Boolean    //允许同时昄¡¤ºå…¶å®ƒçš„菜å?
    defaultAlign : String        //默认寚w½æ–¹å¼:tl-bl?
    defaults : Object        //默认的菜单项配置,ž®†ä¼šåº”用到所有的items
    items : Mixed    //菜单™åÒŽ•°¾l?br />     minWidth : Number        //最ž®å®½åº?默认120
    shadow : Boolean/String    //
    subMenuAlign : String    //子菜单对齐方å¼?tl-tr?
}

Menu( Object config )
构�br />
add( Mixed args ) : Ext.menu.Item
æ·ÕdŠ èœå•™å?br /> 可能的参æ•îCØ“   
* 从Ext.menu.Item¾l§æ‰¿æ¥çš„菜单™å¹å¯¹è±?br /> * 可以被è{æ¢äØ“menu itemçš„HTMLElement对象
* 一个Ext.menu.Item的构造config对象
*一个字½W¦ä¸²,-或separatorž®†äؓ分隔™å?其它的做为TextItem对象的构造参æ•?br />

addElement( Mixed el ) : Ext.menu.Item
æ·ÕdŠ Element对象

addItem( Ext.menu.Item item ) : Ext.menu.Item
æ·ÕdŠ Item 对象

addMenuItem( Object config ) : Ext.menu.Item
æ·ÕdŠ Item对象,˜q™å›žä¼ å…¥çš„参数是item构造的config参数

addSeparator() : Ext.menu.Item
æ·ÕdŠ é—´éš”™å?br />
addText( String text ) : Ext.menu.Item
æ·ÕdŠ æ–‡æœ¬™å?br />
getEl() : Ext.Element
得到当前element对象

hide( [Boolean deep] ) : void
隐藏

insert( Number index, Ext.menu.Item item ) : Ext.menu.Item
在index位置插入item
isVisible() : void
可见?

remove( Ext.menu.Item item ) : void
¿U»é™¤item

removeAll() : void
¿U»é™¤æ‰€æœ?br />
show( Mixed element, [String position], [Ext.menu.Menu parentMenu] ) : void
相对于element昄¡¤ºå½“前菜单

showAt( Array xyPosition, [Ext.menu.Menu parentMenu] ) : void
在绝对位¾|®xyposition昄¡¤ºå½“前菜单


Ext.menu.BaseItem
所有菜单项的基¾c?¾l§æ‰¿è‡ªComponent

config {
    activeClass : String    //‹z»è·ƒæ—¶çš„æ ·å¼¾c?默认x-menu-item-active
    canActivate : Boolean    //能设¾|®æ´»è·?默认为false
    handler : Function    //事äšg处理句柄
    hideDelay : Number    //隔多长时间自动隐è—?默认100(毫秒)
    hideOnClick : Boolean    //点击后自动隐è—?默认为真
}

BaseItem( Object config )
构�br />
setHandler( Function handler, Object scope ) : void
讄¡½®å¤„理句柄handler

事äšg:
activate : ( Ext.menu.BaseItem this )
click : ( Ext.menu.BaseItem this, Ext.EventObject e )
deactivate : ( Ext.menu.BaseItem this )


Ext.menu.Adapter
˜q™ä¸ª¾cÀL˜¯ä¸ÞZº†æ”¯æŒž®†éžBaseItem子类的容器è{æ¢äØ“æ”¯æŒbaseitem的适配å™?除了构é€?与BaseItem无异
Adapter( Ext.Component component, Object config ),可以自己再ç‘ô承它做点实用的事, 他的两个子类更好ç”?br />
Ext.menu.ColorMenu
提供颜色选择
Ext.menu.DateItem
提供日期选择

Ext.menu.Item
是BaseItem的另一个实用子¾c?提供一般的菜单™å?支持菜单™å¹ä¹‹é—´çš„ç›æ€º’关系
config{
    canActivate : Boolean
    href : String
    hrefTarget : String
    icon : String    //默认Ext.BLANK_IMAGE_URL,廸™®®æ›´æ”¹,extjs.com的确太慢äº?br />     iconCls : String
    itemCls : String
    showDelay : Number
    text : String
}
æ–ÒŽ³•
Item( Object config )
构�br />
setIconClass( String cls ) : void
setText( String text ) : void

Ext.menu.CheckItem
¾l§æ‰¿è‡ªItem,前面带有选择框的菜单™å?br /> config{
    checked : Boolean
    group : String
    groupClass : String    //默认x-menu-group-item
    itemCls : String
}

æ–ÒŽ³•
CheckItem( Object config )
构�br />
checkHandler( Ext.menu.CheckItem this, Boolean checked ) : void
选择处理æ–ÒŽ³•

setChecked( Boolean checked, [Boolean suppressEvent] ) : void
讄¡½®é€‰æ‹©çжæ€?br />
事äšg
beforecheckchange : ( Ext.menu.CheckItem this, Boolean checked )
checkchange : ( Ext.menu.CheckItem this, Boolean checked )

Ext.menu.Separator
¾l§æ‰¿è‡ªitem,é—´éš”™å?br />
Ext.menu.TextItem
¾l§æ‰¿è‡ªitem,文本™å?br /> config{
    hideOnClick : Boolean
    itemCls : String
    text : String
}

下面的示例从ext官方而来,¾l§ç®‹½Ž€å•的修改,只有menu相关部分.同样也都很简å?br />

Ext.QuickTips.init();

    //日期选择™å¹ç‚¹å‡ÖMº‹ä»?br />     var dateMenu = new Ext.menu.DateMenu({
        handler : function(dp, date){
           Ext.MessageBox.alert('Date Selected', String.format('You chose {0}.', date.format('M j, Y')));
        }
    });

  
    var colorMenu = new Ext.menu.ColorMenu({
        handler : function(cm,color){
           Ext.MessageBox.alert('Color Selected', String.format('You chose #{0}.', cm.palette.value));
        }
    });

    var menu = new Ext.menu.Menu({
        id: 'mainMenu',
        items: [
            {
                text: 'I like Ext',
                checked: true,     
                checkHandler: onItemCheck
            },
            {
                text: 'Ext for jQuery',
                checked: true,
                checkHandler: onItemCheck
            },
            {
                text: 'I donated!',
                checked:false,
                checkHandler: onItemCheck
            }, '-', {
                text: 'Radio Options',
                menu: {      
                    items: [
                        '<b class="menu-title">Choose a Theme</b>',
                        {
                            text: 'Aero Glass',
                            checked: true,
                            group: 'theme',
                            checkHandler: onItemCheck
                        }, {
                            text: 'Vista Black',
                            checked: false,
                            group: 'theme',
                            checkHandler: onItemCheck
                        }, {
                            text: 'Gray Theme',
                            checked: false,
                            group: 'theme',
                            checkHandler: onItemCheck
                        }, {
                            text: 'Default Theme',
                            checked: false,
                            group: 'theme',
                            checkHandler: onItemCheck
                        }
                    ]
                }
            },{
                text: 'Choose a Date',
                iconCls: 'calendar',
                menu: dateMenu
            },{
                text: 'Choose a Color',
                menu: colorMenu
            }
        ]
    });

    var tb = new Ext.Toolbar();
    tb.render(Ext.getBody());

    tb.add({
            text:'Button w/ Menu',
            iconCls: 'bmenu', // <-- icon
            menu: menu // assign menu by instance
        }
    );

    menu.addSeparator();
    // Menus have a rich api for
    // adding and removing elements dynamically
    var item = menu.add({
        text: 'Dynamically added Item'
    });
    // items support full Observable API
    item.on('click', onItemClick);

    // items can easily be looked up
    menu.add({
        text: 'Disabled Item',
        id: 'disableMe' // <-- Items can also have an id for easy lookup
        // disabled: true   <-- allowed but for sake of example we use long way below
    });
    // access items by id or index
    menu.items.get('disableMe').disable();
  
    //˜q™ä¸ªå¢žåŠ å­èœå•çš„æ–ÒŽ³•照猫画虎学的,至于add的到底是个什ä¹?getXType得不åˆ?item有私有的属性menu?
    var ele=menu.add({
        text:'submit',
        menu:{
            items:[
                {text:'submenu1',handler:onItemClick},
                {text:'submenu2',handler:onItemClick}
            ]
        }
    });
  

    // functions to display feedback
    function onButtonClick(btn){
        Ext.MessageBox.alert('Button Click',String.format('You clicked the "{0}" button.', btn.text));
    }

    function onItemClick(item){
        Ext.MessageBox.alert('Menu Click', String.format('You clicked the "{0}" menu item.', item.text));
    }

    function onItemCheck(item, checked){
        Ext.MessageBox.alert('Item Check', String.format('You {1} the "{0}" menu item.', item.text, checked ? 'checked' : 'unchecked'));
    }

    function onItemToggle(item, pressed){
        Ext.MessageBox.alert('Button Toggled', String.format('Button "{0}" was toggled to {1}.', item.text, pressed));
    }



淘声依旧 2008-10-30 12:24 发表评论
]]>
[转蝲]EXT核心API详解(十五)Ext.widgets-form(� http://www.aygfsteel.com/super2/archive/2008/10/30/237578.html淘声依旧淘声依旧Thu, 30 Oct 2008 04:23:00 GMThttp://www.aygfsteel.com/super2/archive/2008/10/30/237578.htmlhttp://www.aygfsteel.com/super2/comments/237578.htmlhttp://www.aygfsteel.com/super2/archive/2008/10/30/237578.html#Feedback0http://www.aygfsteel.com/super2/comments/commentRss/237578.htmlhttp://www.aygfsteel.com/super2/services/trackbacks/237578.htmlExt.form.BasicForm
对应一个dom中的form,默认是用ajax提交çš?如果的确惛_›žä¼?可以使用如下方式
var myForm. = new Ext.form.BasicForm("form-el-id", {
        onSubmit: Ext.emptyFn,
        submit: function() {
            this.getEl().dom.submit();
        }
    });

æ–ÒŽ³•:
BasicForm( Mixed el, Object config )
其中config配置�br /> {
baseParams : Object,    //è¯äh±‚时的附加参数,格式为{id: '123', foo: 'bar'}
errorReader : DataReader,    //提交时发生验证错è¯?˜q™ä¸ªdataReaderž®†ä¼šè¢«ä‹Éç”?br /> fileUpload : Boolean,    //支持文äšg上传
method : String,    //GET或者POST
reader : DataReader,    //loadæ—¶ä‹É用的数据è¯Õd–å™?br /> timeout : Number,    //­‘…æ—¶æ—‰™—´
trackResetOnLoad : Boolean,//支持使用resetæ–ÒŽ³•恢复原始å€?br /> url : String    //form要提交的url地址
}

add( Field field1, [Field field2], [Field etc] ) : BasicForm
增加字段field1,field2,etc


applyIfToFields( Object values ) : BasicForm
applyToFields( Object values ) : BasicForm
用传入的values呼叫Ext.applyIf/apply æ–ÒŽ³•

clearInvalid() : BasicForm
清除当前basicform中所有的非法信息

doAction( String/Object actionName, [Object options] ) : BasicForm
执行预定义的动作actionName,actionName¾cÖM¼¼"submit","load",也可以是自定义的动作的名字或一个Ext.form.Action的实ä¾?options¾cÖM¼¼å¦‚下对象{
url               :String,
method            :String,          
params            :String/Object,  
success           :Function,
failure           :Function,
clientValidation :Boolean        
}

findField( String id ) : Field
在当前form中查找id/dataindex/name½{‰äºŽä¼ å…¥çš„idçš„field对象

getEl() : Ext.Element
得到当前form对象的element对象


getValues( Boolean asString ) : Object
得到当前formçš„fields {name:value,name:values}json对象,如果有同名多å€?valuež®†æ˜¯ä¸€ä¸ªæ•°¾l?br />
isDirty() : Boolean
从初始蝲入后,是否有field被修改过

isValid() : Boolean
客户端验证成�

load( Object options ) : BasicForm
½{‰æ•ˆäºŽdoAction('load',options);

loadRecord( Record record ) : BasicForm
从一个record对象取值到当前basicform

markInvalid( Array/Object errors ) : BasicForm
标志非法,[{id:'fieldId', msg:'The message'},...]˜q™æ ·æ ¼å¼çš„æ•°¾l„或者{id: msg, id2: msg2}格式的对è±?br />
remove( Field field ) : BasicForm
从basicform中移除field

render() : BasicForm
在basicFormçš„fields中寻æ‰?利用id属性检查他ä»?然后用id属性呼叫applyToæ–ÒŽ³•

reset() : BasicForm
重置所有�br />
setValues( Array/Object values ) : BasicForm
讄¡½®å€?参见getValues

submit( Object options ) : BasicForm
提交表单

updateRecord( Record record ) : BasicForm
利用当前更新record对象,参见loadRecord

事äšg:
actioncomplete : ( Form. this, Action action )
actionfailed : ( Form. this, Action action )
beforeaction : ( Form. this, Action action )


Ext.form.Field
有了form之后,我们当然˜q˜éœ€è¦field
æ–ÒŽ³•:
Field( Object config )
其中config讄¡½®ä¸º{
    autoCreate : String/Object,    //一个{tag: "input", type: "text", size: "20", autocomplete: "off"}˜q™æ ·çš„对è±?或者é€?nbsp;                   æ‹©true,ž®±æ˜¯å‰é¢æ‰€è¯´çš„那个固定内置对象
    clearCls : String,        //,默认x-form-clear-left
    cls : String,            //默认样式
    disabled : Boolean,       
    fieldClass : String        //x-form-field
    fieldLabel : String       
    focusClass : String        //x-form-focus
    hideLabel : Boolean        //隐藏前导标签
    inputType : String        //input type="???"
    invalidClass : String        //x-form-invalid
    invalidText : String       
    itemCls :String
    labelSeparator : String        //分隔½W?br />     msgFx : String
    msgTarget : String
    name : String
    readOnly : Boolean
    tabIndex : Number
    validateOnBlur : Boolean    //true
    validationDelay : Number    //250
    validationEvent : String/Boolean    //KeyUP
    value : Mixed
}

构造很éºÈƒ¦çš?但还好我们一般不会直接ä‹É用field

clearInvalid() : void
清除非法信息

getName() : String
getRawValue() : Mixed
getValue() : Mixed
isDirty() : void
isValid( Boolean preventMark ) : Boolean
markInvalid( String msg ) : void
reset() : void
setRawValue( Mixed value ) : void
setValue( Mixed value ) : void
validate() : Boolean

都很½Ž€å•也略过äº?br /> 事äšg
blur : ( Ext.form.Field this )
change : ( Ext.form.Field this, Mixed newValue, Mixed oldValue )
focus : ( Ext.form.Field this )
invalid : ( Ext.form.Field this, String msg )
specialkey : ( Ext.form.Field this, Ext.EventObject e )
valid : ( Ext.form.Field this )

Ext.form.Checkbox
¾l§æ‰¿è‡ªField, 复选框

Checkbox( Object config )
构�其中config{
    autoCreate : String/Object,
    boxLabel : String,
    checked : Boolean,
    fieldClass : String,//x-form-field
    focusClass : String,
}

getValue() : Boolean
initComponent() : void
setValue( Boolean/String checked ) : void

事äšg
check : ( Ext.form.Checkbox this, Boolean checked )

Ext.form.Radio
¾l§æ‰¿è‡ªExt.form.Checkbox,单选框
多了一个方�br /> getGroupValue() : String
如果单选框是一¾l„radio 的一部分,取当前选中的å€?br />
Ext.form.Hidden
¾l§æ‰¿è‡ªField,隐藏字段,æ— æ–°ç‰ÒŽ€?br />

Ext.form.HtmlEditor
¾l§æ‰¿è‡ªField,˜q™ä¸ªhtmleditor功能太简单了,什么äh能扩充一下就好了

config定义{
createLinkText : String    //
defaultLinkValue : String    // http://
enableAlignments : Boolean
enableColors : Boolean
enableFont : Boolean
enableFontSize : Boolean
enableFormat : Boolean
enableLinks : Boolean
enableLists : Boolean
enableSourceEdit : Boolean
fontFamilies : Array    //˜q™ä¸ªå½“然要用汉字的字体组成的数组äº?br /> }

æ–ÒŽ³•

cleanHtml( String html ) : void
createToolbar( HtmlEditor editor ) : void
execCmd( String cmd, [String/Boolean value] ) : void
getDocMarkup() : void
getToolbar() : Ext.Toolbar
insertAtCursor( String text ) : void
pushValue() : void
relayCmd( String cmd, [String/Boolean value] ) : void
syncValue() : void
toggleSourceEdit( [Boolean sourceEdit] ) : void
updateToolbar() : void


要提一点的æ˜?要ä‹É用HtmlEditor,别忘了先Ext.QuickTips.init();



Ext.form.TextField
config{
    allowBlank : Boolean    //允许为空
    blankText : String    //如果为空验证错误时的提示文字 ,默认This field is required
    disableKeyFilter : Boolean
    emptyClass : String
    emptyText : String
    grow : Boolean    // 自动生长?,如果需è¦?会加宽当前input type="text"
    growMax : Number
    growMin : Number
    maskRe : RegExp    //仅允许输入与maskRe匚w…çš„æŒ‰é”?br />     maxLength : Number
    maxLengthText : String    //­‘…出最大长度时提示文本
    minLength : Number
    minLengthText : String    //不够最ž®é•¿åº¦æ—¶æç¤ºä¿¡æ¯
    regex : RegExp        //正则匚w…
    regexText : String    //提示
    selectOnFocus : Boolean
    validator : Function    //自定义验证方æ³?接受当前字段的å€?如果合法,˜q”回çœ?反之˜q”回自定义信æ?br />     vtype : String    //Ext.form.VTypes 中定义的vtype¾cÕdž‹å?支持½Ž€å•çš„¾cÕdž‹éªŒè¯
    vtypeText : String//如果不是,则提½C?br /> }

æ–ÒŽ³•:
TextField( Object config )
构�br />
autoSize() : void
自动ž®ºå¯¸

reset() : void
重置

selectText( [Number start], [Number end] ) : void
选择文本

validateValue( Mixed value ) : Boolean
验证�img src ="http://www.aygfsteel.com/super2/aggbug/237578.html" width = "1" height = "1" />

淘声依旧 2008-10-30 12:23 发表评论
]]>
[转蝲]EXT核心API详解(十六)Ext.widgets-form(� http://www.aygfsteel.com/super2/archive/2008/10/30/237579.html淘声依旧淘声依旧Thu, 30 Oct 2008 04:23:00 GMThttp://www.aygfsteel.com/super2/archive/2008/10/30/237579.htmlhttp://www.aygfsteel.com/super2/comments/237579.htmlhttp://www.aygfsteel.com/super2/archive/2008/10/30/237579.html#Feedback0http://www.aygfsteel.com/super2/comments/commentRss/237579.htmlhttp://www.aygfsteel.com/super2/services/trackbacks/237579.htmlExt.form.NumberField
¾l§æ‰¿è‡ªExt.form.TextField,因䨓Ext.form.TextField虽然强大,但写èµäh¥çš„ç¡®˜q˜æ˜¯æœ‰ç‚¹éºÈƒ¦,后面的类都ç‘ô承自Ext.form.TextField,没有自定义的æ–ÒŽ³•,属性和事äšg

config定义为{
    allowDecimals : Boolean    //true
    allowNegative : Boolean    //true
    baseChars : String    //'0123456789'
    decimalPrecision : Number    //¾_‘Öº¦,默认å€?
    decimalSeparator : String    //ž®æ•°åˆ†éš”½W?br />     fieldClass : String    //默认样式为x-form-field x-form-num-field
    maxText : String
    maxValue : Number    //默认Number.MAX_VALUE
    minText : String
    minValue : Number    //默认Number.NEGATIVE_INFINITY
    nanText : String    //NaN时显½C?
}

Ext.form.TextArea

config{
    autoCreate : String/Object    //{tag: "textarea", style. "width:100px;height:60px;", autocomplete: "off"}
    growMax : Number    //1000
    growMin : Number    //60
    preventScrollbars : Boolean    //如果为真½{‰äºŽè®„¡½®overflow: hidden,默认为false
}

Ext.form.TriggerField
˜q™ä¸ª¾cÕdªè¦text旁边加了个下拉按é’?要自己实现onTriggerClick
config{
    autoCreate : String/Object,    //{tag: "input", type: "text", size: "16", autocomplete: "off"}
    hideTrigger : Boolean        //隐藏trigger,ž®±æ˜¯åŒ™¾¹çš„那个下拉选择æ¡?br />     triggerClass : String

}
事äšg
onTriggerClick( EventObject e ) : void


Ext.form.DateField
¾l§æ‰¿è‡ªTriggerField,用于日期选择

config{
    altFormats : String        //转换用户输入到日期时的格å¼?默认'm/d/Y|m-d-y|m-d-Y|m/d|m-d|d'
    autoCreate : String/Object    //{tag: "input", type: "text", size: "10", autocomplete: "off"}
    disabledDates : Array        //¼›æ­¢é€‰æ‹©çš„æ—¥æœ?ä¾?["^03","04/../2006","09/16/2003"],不让é€?æœ?2006òq?æœ?2003òq?æœ?6
    disabledDatesText : String    //不让选æ€Õd¾—¾l™ä¸ªç†ç”±å?br />     disabledDays : Array    //不让选星期几,例[0,6],不让选周å…?周日
    disabledDaysText : String    //周日要休æ?˜q™å°±æ˜¯ç†ç”?br />     format : String    //昄¡¤ºæ—¶çš„æ ¼å¼
    invalidText : String    //验证非法时的提示
    maxText : String
    maxValue : Date/String
    minText : String
    minValue : Date/String
    triggerClass : String
}

æ–ÒŽ³•,除了构é€?多了两个™å‘֐æ€ä¹‰çš„æ–¹æ³?br /> DateField( Object config )
getValue() : Date
setValue( String/Date date ) : void



Ext.form.ComboBox
config{
    allQuery : String        //''
    autoCreate : Boolean/Object    //{tag: "input", type: "text", size: "24", autocomplete: "off"}
    displayField : String    //昄¡¤ºå­—段
    editable : Boolean        //true当然ž®±æ˜¯comboboxäº?如果不可¾~–辑ž®±æ˜¯ä¸€ä¸ªselectäº?br />     forceSelection : Boolean
    handleHeight : Number    //如果resiable为真æ—?讄¡½®
    hiddenName : String
    lazyInit : Boolean    //除非得到焦点才开始初始化列表,默认为真
    lazyRender : Boolean    //除非è¯äh±‚,才开始输å‡?默认为假
    listAlign : String    //寚w½æ–¹å¼,参见Ext.Element.alignTo,默认ä¸?tl-bl'
    listClass : String
    listWidth : Number
    loadingText : String    //仅当mode = 'remote'时调用数据时昄¡¤ºçš„æ–‡æœ?br />     maxHeight : Number        //300
    minChars : Number        //最ž®‘输入多ž®‘个字开始响åº?˜qœç¨‹æ—‰™»˜è®¤äØ“4,本地ä¸?,如果不可¾~–辑则此值无æ•?br />     minListWidth : Number
    mode : String    //可选值local/remote之一,从本地还是远½E‹å–数据
    pageSize : Number    //在远½E‹æ¨¡å¼ä¸‹,如果此值大äº?会在底部昄¡¤ºä¸€ä¸ªç¿»™åµå·¥å…äh¡
    queryDelay : Number    //查询延时,˜qœç¨‹é»˜è®¤ä¸?00,本地10
    queryParam : String    //查询参数,默认为query
    resizable : Boolean
    selectOnFocus : Boolean
    selectedClass : String
    shadow : Boolean/String    //Trueæˆ?sides"为默认风æ ? "frame" for 4-way shadow, and "drop" for bottom-right
    store : Ext.data.Store
    title : String
    transform. Mixed    //对应一个select元素,可以ž®†selectè½¬äØ“combobox对象
    triggerAction : String    //点击按钮时的动作.默认为query
    triggerClass : String
    typeAhead : Boolean        //false
    typeAheadDelay : Number    //250
    valueField : String
    valueNotFoundText : String    //å€ég¸å­˜åœ¨æ—¶çš„æç¤ºä¿¡æ¯
}

属�br /> view : Ext.DataView

æ–ÒŽ³•
ComboBox( Object config )
构�br />
clearValue() : void
清除所有文�值对

collapse() : void
expand() : void
æ”¶è“v/展开下拉列表

doQuery( String query, Boolean forceAll ) : void
执行查询

getValue() : String
选择当前字段的�br />
isExpanded() : void
下拉列表是展开�

select( Number index, Boolean scrollIntoView ) : void
选中½W¬index列表™å?br />
selectByValue( String value, Boolean scrollIntoView ) : Boolean
选中å€égØ“value的列表项

setEditable( Boolean value ) : void
设editableå±žæ€§äØ“value

setValue( String value ) : void
讄¡½®å½“前å€égØ“

事äšg
beforequery : ( Object queryEvent )
beforeselect : ( Ext.form.ComboBox combo, Ext.data.Record record, Number index )
collapse : ( Ext.form.ComboBox combo )
expand : ( Ext.form.ComboBox combo )
select : ( Ext.form.ComboBox combo, Ext.data.Record record, Number index )


Ext.form.TimeField
¾l§æ‰¿è‡ªcombobox,用于选择旉™—´
config{
    altFormats : String    //
    format : String
    increment : Number    //æ—‰™—´å¢žé•¿é—´éš”,默认15
    invalidText : String
    maxText : String
    maxValue : Date/String
    minText : String
    minValue : Date/String
}

æ€?的来说Ext.form对input type='text' select ˜q™æ ·çš„输入标½{ùNƒ½æœ‰å¯¹åº”çš„¾c?òq¶å¯¹æœ‰äº›æ ‡ç­¾åšäº†½Ž€å•的扩展,当然很重要的一ç‚?漂亮多了,vtype属性也方便了处ç?廸™®®æœ‰å…´­‘£çš„同胞å¯? Ext.form.VTypeså’ŒExt.form.HtmlEditor做一些扩å±?br /> form中还有两个类,比如下例中的FormPanelå’ŒFieldSet,
都ç‘ô承自panel,所以会攑֜¨panel中解é‡?br />
¾l¼åˆ½CÞZ¾‹
   

Ext.QuickTips.init();
  
    var arr=[ [1, 'æœ?拉登'], [2, '½W?拉登'],[3, '½W?拉灯'] ];
    var reader = new Ext.data.ArrayReader(
   {id: 0},
   [
    {name: 'value'},       
    {name: 'key'}  
    ]);
  
    var store=new Ext.data.Store({
      reader:reader
   });
   store.loadData(arr);
  
    var htmleditor=new Ext.form.HtmlEditor({
        fieldLabel:'htmleditor',
        width:450,
        fontFamilies:['宋体','隶书'],
        name:'editor',
        id:'editor'
    });
       var form. = new Ext.FormPanel({
        labelWidth: 75,
        ,
        frame.:true,
        width: 800,
        defaultType: 'textfield',
        items: [
            new Ext.form.Checkbox({     //checkbox
                fieldLabel:'checkbox',
                name:'cb',
                checked:true,
                boxLabel:'checkbox'
            }),
            new Ext.form.FieldSet({ //radio
                border:false,
                title:'radio',
                items:[
                    new Ext.form.Radio({
                        labelSeparator:'',
                        name:'radio',
                        checked:true,
                        boxLabel:'radio 1'
                    }),
                    new Ext.form.Radio({
                        labelSeparator:'',
                        name:'radio',
                        checked:true,
                        boxLabel:'radio 2'
                    })
                ]
             }),
            new Ext.form.Hidden({   //hidden
                name:'hidden'
            }),
          
            htmleditor,
            new Ext.form.TextField({ //text
                fieldLabel:'text',
                name:'text',
                grow:true,
                allowBlank:false,
                blankText : "˜q™ä¸ªå­—æ®µæœ€å¥½ä¸è¦äØ“½I?,
                maskRe:/[a-zA-z]/gi
            }),
            new Ext.form.NumberField({ //NumberField
                allowNegative:true,
                fieldLabel:'number',
                  name:'number'
            }),
            new Ext.form.TextArea({    //TextArea
                fieldLabel:'textarea',
                name:'textarea'
            }),
            new Ext.form.TriggerField({ //TriggerField
                fieldLabel:'TriggerField',
                name:'TriggerField'
            }),
            new Ext.form.ComboBox({ //select
                fieldLabel:'select',
                editable:false,
                triggerAction: 'all',
                valueField:'value',
                displayField:'key',
                mode: 'local',
                store:store
            }),
            new Ext.form.ComboBox({ //combobox
                fieldLabel:'ComboBox',
                displayField:'key',
                mode: 'local',
                store:store
            }),
            new Ext.form.DateField({ //DateField
                fieldLabel:'DateField',
                format:'Y-m-d',
                disabledDays:[0,6]
            }),
            new Ext.form.TimeField({//TimeField
                fieldLabel:'TimeField',
                mode: 'local',
                increment:60
              
            })
            ]
        });
form.render(document.body);

htmleditor.setRawValue("<h1>hello world</h1>");
htmleditor.syncValue();

淘声依旧 2008-10-30 12:23 发表评论
]]>
[转蝲]EXT核心API详解(十四)Ext.widgets-Button,SplitButton,CycleButtonhttp://www.aygfsteel.com/super2/archive/2008/10/30/237577.html淘声依旧淘声依旧Thu, 30 Oct 2008 04:22:00 GMThttp://www.aygfsteel.com/super2/archive/2008/10/30/237577.htmlhttp://www.aygfsteel.com/super2/comments/237577.htmlhttp://www.aygfsteel.com/super2/archive/2008/10/30/237577.html#Feedback0http://www.aygfsteel.com/super2/comments/commentRss/237577.htmlhttp://www.aygfsteel.com/super2/services/trackbacks/237577.htmlExt.Action
action实现一个脱¼›ÖMº†å®?器的事äšg,所有它可以在多个容器之间共äº?不过好象只有Ext.Toolbar, Ext.Button å’? Ext.menu.Menu支持action接口:),å› äØ“å®¹å™¨è¦å®žçŽîC¸‹é¢æ‰€æœ‰çš„æ–ÒŽ³•setText(string), setIconCls(string), setDisabled(boolean), setVisible(boolean) and setHandler(function)

æ–ÒŽ³•:
Action( Object config )
构�config定义为{
disabled : Boolean,//¼›æ­¢ä½¿ç”¨
handler : Function,//事äšg句柄
hidden : Boolean,//隐藏
iconCls : String,//样式¾c?br /> scope : Object, //handlerž®†åœ¨å“ªä¸ªèŒƒå›´å†…执è¡?br /> text : String //文本
}

disable() : void
enable() : void
setDisabled( Boolean disabled ) : void
¼›æ­¢/允许

each( Function fn, Object scope ) : void
为每个实çŽîCº†æ­¤actionçš„componet应用fn

hide() : void
show() : void
setHidden( Boolean hidden ) : void
昄¡¤º/隐藏

setHandler( Function fn, Object scope ) : void
setIconClass( String cls ) : void
setText( String text ) : void
重新讄¡½®config配置的属性å€?br />
½CÞZ¾‹:
function onItemCheck(item){
Ext.MessageBox.alert("点击事äšg",String.format("您选择了{0}",item.text));
}
function showMenu(obj){
Ext.MessageBox.alert("点击下拉",obj.getXTypes() )
}
Ext.QuickTips.init();
var button=new Ext.SplitButton({
    renderTo:Ext.getBody(),
    arrowHandler : showMenu,
    handler: onItemCheck,
    arrowTooltip : "更多",
    text:'按我',
    menu:'mainMenu'
});



Ext.Button
½Ž€å•的按钮¾c?br />

公有属�
disabled : Boolean
允许?
hidden : Boolean
隐藏?
pressed : Boolean
按下?

æ–ÒŽ³• [¾l§æ‰¿æ¥çš„忽略]
Button( Object config )
构造可选config{
clickEvent : String,    //handler响应的事ä»?默认是click
cls : String,        //样式
disabled : Boolean,    //¼›æ­¢
enableToggle : Boolean,//允许在按下没按下之间切换,æ·ÕdŠ ¿U»é™¤x-btn-pressed样式¾c?br /> handleMouseEvents : Boolean,//允许使用¿UÕd…¥¿UÕd‡ºæŒ‰ä¸‹äº‹äšg,默认是真
handler : Function,    //响应clickEvent定义的事ä»?br /> hidden : Boolean,    //隐藏
icon : String,        //图标文äšg地址,如果修改x-btn-text-icon样式¾cÕd¯ä»¥é‡å®šä¹‰é»˜è®¤icon
iconCls : String,    //å’Œicon功能¾cÖM¼¼,但ä‹É用设定了background-image属性的样式定义
menu : Mixed        //如果需è¦?可以为按钮定义菜å?br /> menuAlign : String,    //菜单寚w½æ–¹å¼,默认值是tl-bl
minWidth : Number,    //最ž®å®½åº?br /> pressed : Boolean,    //是否按下
repeat : Boolean/Object,//是否需要重复定义鼠标按下事�也可以是一个Ext.util.ClickRepeater配置对象
scope : Object,    //handler事äšg的范å›?br /> tabIndex : Number,    //table键顺åº?br /> text : String,        //文本
toggleGroup : String,    //如果定义一¾l„enableToggle为真且toggleGroup值相同的button对象,˜q™äº›å¯¹è±¡åŒä¸€æ—‰™—´å†…将只有一个处于按下状æ€?br /> tooltip : String/Object, //提示信息,可以是一个字½W¦ä¸²æˆ–QuickTips的配¾|®å¯¹è±?br /> tooltipType : String,    //可选å€?qtip"(默认)æˆ?title"之一
type : String        //可选å€?submit"/"reset"/"button"(默认)之一
}


focus() : void
//得到焦点

getText() : String
//取得文本

hasVisibleMenu() : Boolean
//有可视的菜单?
hideMenu() : void
//隐藏菜单
initComponent() : void
//初始化容�br /> setHandler( Function handler, [Object scope] ) : void
//讄¡½®äº‹äšg处理æ–ÒŽ³•
setText( String text ) : void
//讄¡½®æ–‡æœ¬
showMenu() : void
//昄¡¤ºèœå•
toggle( [Boolean state] ) : void
//切换按下状�br />

½CÞZ¾‹:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " <html xmlns=" <head>
    <title>Untitled Page</title>
     <link rel="stylesheet" rev="stylesheet" href="/css/ext-all.css" type="text/css" media="all" />
     <script. type="text/javascript" src="/scripts/adapter/ext/ext-base.js"></script>
     <script. type="text/javascript" src="/scripts/ext-all.js"></script>
     <style. type="text/css">
     /*--加入样式背景好直观一ç‚?/
     .x-btn-pressed button{
        background-color:red;
     }
     </style>
     <script. type="text/javascript">
     Ext.onReady(function(){
   
//有菜单的按钮
    function onItemCheck(item){
        Ext.MessageBox.alert("点击事äšg",String.format("您选择了{0}",item.text));
    }
var menu = new Ext.menu.Menu({
    id: 'mainMenu',
    items: [
        {
            text: 'menu1',
            handler: onItemCheck
        },
        {
            text: 'menu2',
            handler: onItemCheck
        }]
});
var button=new Ext.Button({
    renderTo:Ext.getBody(),
    text:'按我',
    menu:'mainMenu'
});
//有状态的探钮
new Ext.Button({
    renderTo:Ext.getBody(),
    text:'toggle button ',
    enableToggle:true
});
//分组的有状态按�br /> new Ext.Button({
    renderTo:Ext.getBody(),
    text:'toggle button 1',
    enableToggle:true,
    toggleGroup:'toggleGroup',
    handler: onItemCheck
});

new Ext.Button({
    renderTo:Ext.getBody(),
    text:'toggle button 2',
    enableToggle:true,
    toggleGroup:'toggleGroup',
    handler: onItemCheck
});
     });
     </script>
</head>
<body>
</body>
</html>


Ext.SplitButton
上例中的带菜单按钮还不专�于是有了Ext.SplitButton,专门为带有下拉菜单的按钮设计�br />

æ–ÒŽ³•:
SplitButton( Object config )
构�config中加入了{
arrowHandler : Function,
arrowTooltip : String
}

setArrowHandler( Function handler, [Object scope] ) : void
讄¡½®ä¸‹æ‹‰½Ž­å¤´çš„点å‡ÖMº‹ä»?br />
事äšg:
arrowclick : ( MenuButton this, EventObject e )


使用½CÞZ¾‹:
æ¯”å¦‚ä¸Šä¾‹ä¸­çš„èœå•æŒ‰é’®å¯ä»¥æ”¹äØ“

function onItemCheck(item){
Ext.MessageBox.alert("点击事äšg",String.format("您选择了{0}",item.text));
}
function showMenu(obj){
Ext.MessageBox.alert("点击下拉",obj.getXTypes() )
}

Ext.QuickTips.init();
var button=new Ext.SplitButton({
    renderTo:Ext.getBody(),
    arrowHandler : showMenu,
    handler: onItemCheck,
    arrowTooltip : "更多",
    text:'按我',
    menu:'mainMenu'
});


Ext.CycleButton
˜q™æ˜¯ä¸€ä¸ªSplitButton的实用子¾c?用于在多个item之间切换状æ€?当然它也会带有menu可供选择,也可以直接点å‡ÀLŒ‰é”®åœ¨item之间切换




æ–ÒŽ³•:
CycleButton( Object config )
æž„é€?config新增配置™å¹{
changeHandler : Function,    //状态切换时的处理事ä»?br /> items : Array, //items应该是menu item的数¾l?br /> prependText : String,    //前导text
showText : Boolean,    //˜q½åŠ itemçš„text到按钮显½C?br /> }

getActiveItem() : Ext.menu.CheckItem
setActiveItem( Ext.menu.CheckItem item, Boolean suppressEvent ) : void
得到/讄¡½®‹zÕdЍ选项
toggleSelected() : void
切换选择™å?相当于点å‡ÖM¸€‹Æ¡æŒ‰é’?br />
½CÞZ¾‹
new Ext.CycleButton({
    renderTo:Ext.getBody(),
    showText: true,
    prependText: 'View as ',
    items: [{
        text:'text only',
        iconCls:'view-text',
        checked:true
    },{
        text:'HTML',
        iconCls:'view-html'
    },{
        text:'XML',
        iconCls:'view-html'
    }
    ],
    changeHandler:function(btn, item){
        Ext.MessageBox.alert('Change View', item.text);
    }
});


淘声依旧 2008-10-30 12:22 发表评论
]]>
[转蝲]EXT核心API详解(十二)Ext.data-GroupingStore/JsonStore/SimpleStore javascript http://www.aygfsteel.com/super2/archive/2008/10/30/237575.html淘声依旧淘声依旧Thu, 30 Oct 2008 04:21:00 GMThttp://www.aygfsteel.com/super2/archive/2008/10/30/237575.htmlhttp://www.aygfsteel.com/super2/comments/237575.htmlhttp://www.aygfsteel.com/super2/archive/2008/10/30/237575.html#Feedback0http://www.aygfsteel.com/super2/comments/commentRss/237575.htmlhttp://www.aygfsteel.com/super2/services/trackbacks/237575.html ¾l§æ‰¿è‡ªExt.data.Store,为Store增加了分¾l„功èƒ?其它用法与Store一è‡?惟一需要注意的是ä‹É用GroupingStoreæ—¶å¿…™åÀLŒ‡å®šsortInfo信息
增加了配¾|®å±žæ€?br /> groupField : String//用于分组的字ŒD?br /> groupOnSort : Boolean//如果为真,ž®†ä¾æŽ’序字段重新分组,默认为假
remoteGroup : Boolean//˜qœç¨‹æŽ’序
当然也会多一个groupæ–ÒŽ³•
groupBy( String field, [Boolean forceRegroup] ) : void
™å‘֐æ€ä¹‰éƒ½æ˜¯é‡æ–°æŽ’序用的

下面是个½Ž€å•çš„½CÞZ¾‹

var arr=[ [1, 'æœ?, '拉登'], [2, '½W?, '拉登'],[3, '½W?, '拉灯'] ];
    var reader = new Ext.data.ArrayReader(
   ...{id: 0},
   [
    ...{name: 'name', mapping: 1},       
    ...{name: 'occupation', mapping: 2}  
    ]);
  
    var store=new Ext.data.GroupingStore(...{
      reader:reader,
      groupField:'name',
      groupOnSort:true,
      sortInfo:...{field: 'occupation', direction: "ASC"} //使用GroupingStoreæ—¶å¿…™åÀLŒ‡å®šsortInfo信息
   });
   store.loadData(arr);

   //GridPanel以后会讨è®?˜q™å„¿ä½¿ç”¨å®ƒæ˜¯ä¸ÞZº†ç›´è§‚的表现GroupingStore
   var grid = new Ext.grid.GridPanel(...{
    ds: store,
    columns: [
        ...{header: "name", width: 20, sortable: true,dataIndex: 'name'},
        ...{header: "occupation", width: 20,sortable: true, dataIndex: 'occupation'}
    ],
    view: new Ext.grid.GroupingView(...{
        forceFit:true,
        groupTextTpl: '{text} ({[values.rs.length]} {[values.rs.length > 1 ? "Items" : "Item"]})'
    }),
    frame.:true,
    width: 700,
    height: 450,
    collapsible: true,
    animCollapse: false,
    title: 'Grouping Example',
    renderTo: 'Div_GridPanel'
    });

Ext.data.JsonStore
也是Store子类,目标是更方便的ä‹É用json对象做数据源
构造中多了fields,root,用法如下例所½C?br /> /**//*
˜q™æ˜¯ä½¿ç”¨˜qœç¨‹å¯¹è±¡,˜q”回内容与下面本地对象的data一è‡?br /> var store=new Ext.data.JsonStore({
        url:'jsoncallback.js',
        root:'rows',
        fields:['id','name','occupation']
    });
    store.load();
*/
    var store=new Ext.data.JsonStore(...{
        data:...{ 'results': 2, 'rows': [
        ...{ 'id': 1, 'name': 'Bill', occupation: 'Gardener' },
        ...{ 'id': 2, 'name': 'Ben', occupation: 'Horticulturalist' }
        ]},
    autoLoad:true,
    root:'rows',
    fields:['id','name','occupation']
    })

    //目前请先略过gridpanel,以后再说
    var grid = new Ext.grid.GridPanel(...{
    ds: store,
    columns: [
        ...{header: "id", width: 200, sortable: true,dataIndex: 'id'},
        ...{header: "name", width: 200, sortable: true,dataIndex: 'name'},
        ...{header: "occupation", width: 200,sortable: true, dataIndex: 'occupation'}
    ],height:350,
      width:620,
      title:'Array Grid',
      renderTo: 'Div_GridPanel'
    });


Ext.data.SimpleStore
从数¾l„对象更方便的创建Store对象,
ä¾?br /> var store=new Ext.data.JsonStore(...{
        data:[
           [1, 'Bill', 'Gardener'], [2, 'Ben', 'Horticulturalist']
            ],
        autoLoad:true,
        fields:[...{name: 'name', mapping: 1},...{name:'occupation',mapping:2}]
    })
    var grid = new Ext.grid.GridPanel(...{
    ds: store,
    columns: [
        ...{header: "name", width: 200, sortable: true,dataIndex: 'name'},
        ...{header: "occupation", width: 200,sortable: true, dataIndex: 'occupation'}
    ],height:350,
      width:620,
      renderTo: 'Div_GridPanel'
    });

淘声依旧 2008-10-30 12:21 发表评论
]]>
[转蝲]EXT核心API详解(十三)Ext.data-Tree/Nodehttp://www.aygfsteel.com/super2/archive/2008/10/30/237576.html淘声依旧淘声依旧Thu, 30 Oct 2008 04:21:00 GMThttp://www.aygfsteel.com/super2/archive/2008/10/30/237576.htmlhttp://www.aygfsteel.com/super2/comments/237576.htmlhttp://www.aygfsteel.com/super2/archive/2008/10/30/237576.html#Feedback0http://www.aygfsteel.com/super2/comments/commentRss/237576.htmlhttp://www.aygfsteel.com/super2/services/trackbacks/237576.htmlExt.data.Tree
¾l§æ‰¿è‡ªObservable,用于存放树装的数据结æž?br />
æ–ÒŽ³•
Tree( [Node root] )
以root为根构造Ext.data.Tree对象

getNodeById( String id ) : Node
由指定id得到节点

getRootNode() : Node
得到根节�由属性root得到更方�br />
setRootNode( Node node ) : Node
讄¡½®æ ¹èŠ‚ç‚?br />
事äšgæœ?br /> append : ( Tree tree, Node parent, Node node, Number index )
beforeappend : ( Tree tree, Node parent, Node node )
beforeinsert : ( Tree tree, Node parent, Node node, Node refNode )
beforemove : ( Tree tree, Node node, Node oldParent, Node newParent, Number index )
beforeremove : ( Tree tree, Node parent, Node node )
insert : ( Tree tree, Node parent, Node node, Node refNode )
move : ( Tree tree, Node node, Node oldParent, Node newParent, Number index )
remove : ( Tree tree, Node parent, Node node )


Ext.data.Node
节点
属�br /> attributes : Object
节点属性集

childNodes : Array
子节�br />
firstChild : Node
½W¬ä¸€ä¸ªå­èŠ‚ç‚¹

id : String
id

lastChild : Node
最后一个子节点

nextSibling : Node
下一个兄弟节�br />
parentNode : Node
父节�br />
previousSibling : Node
前一个兄弟节�br />
Node( Object attributes )
构造节�br />
appendChild( Node/Array node ) : Node
ž®†nodeåšäØ“é™„åŠ åœ¨å½“å‰èŠ‚ç‚¹çš„lastChild之后


bubble( Function fn, [Object scope], [Array args] ) : void
由当前节点开始一直上溯到根节ç‚?对于每个节点应用fn,直到有一个fn˜q”å›žå‡äØ“æ­?br />

cascade( Function fn, [Object scope], [Array args] ) : void
由当前节点开始一下对每个子孙节点应用fn.直到˜q”回false为止

contains( Node node ) : Boolean
当前节点是node的祖先节�

eachChild( Function fn, [Object scope], [Array args] ) : void
基本同cascade,但只针对子节点应用fn

findChild( String attribute, Mixed value ) : Node
在子节点中找到第一个有属性attributeå€égØ“value的节ç‚?br />
findChildBy( Function fn, [Object scope] ) : Node
在子节点中找到第一个应用fn˜q”回真的节点

getDepth() : Number
得到当前节点深度,根节ç‚ÒŽ·±åº¦äØ“0

getOwnerTree() : Tree
得到当前节点的Tree对象

getPath( [String attr] ) : String
得到当前节点的èµ\å¾?默认attr为id

indexOf( Node node ) : Number
node在当前节点的子节点中的位¾|?br />
insertBefore( Node node, Node refNode ) : Node
在参考节点refNode之前插入node节点

isAncestor( Node node ) : Boolean
当前节点是node的祖先节�

isFirst() : Boolean
isLast() : Boolean
当前节点是父节点的第一/最后一个节�br />
isLeaf() : Boolean
是叶节点?指不含子节点

item( Number index ) : Node
½W¬index个子节点

removeChild( Node node ) : Node
¿U»é™¤node子节ç‚?br />
replaceChild( Node newChild, Node oldChild ) : Node
用newchild替换oldchild子节�br />
sort( Function fn, [Object scope] ) : void
用指定的fn排序子节�img src ="http://www.aygfsteel.com/super2/aggbug/237576.html" width = "1" height = "1" />

淘声依旧 2008-10-30 12:21 发表评论
]]>
[转蝲]EXT核心API详解(十一)Ext.data-Store http://www.aygfsteel.com/super2/archive/2008/10/30/237573.html淘声依旧淘声依旧Thu, 30 Oct 2008 04:20:00 GMThttp://www.aygfsteel.com/super2/archive/2008/10/30/237573.htmlhttp://www.aygfsteel.com/super2/comments/237573.htmlhttp://www.aygfsteel.com/super2/archive/2008/10/30/237573.html#Feedback0http://www.aygfsteel.com/super2/comments/commentRss/237573.htmlhttp://www.aygfsteel.com/super2/services/trackbacks/237573.htmlExt.data.Store
storeæ˜¯ä¸€ä¸ªäØ“Ext器äšg提供record对象的存储容å™?è¡ŒäØ“å’Œå±žæ€§éƒ½å¾ˆè±¡æ•°æ®è¡?br />
æ–ÒŽ³•:不列丄¡‘ô承来的方æ³?br /> Store( Object config )
构�config定义为{
autoLoad : Boolean/Object,    //自动载入
baseParams : Object,    //只有使用httpproxy时才有意ä¹?br /> data : Array,        //数据
proxy : Ext.data.DataProxy,//数据代理
pruneModifiedRecords : boolean,//清除修改信息
reader : Ext.data.Reader,    //数据è¯Õd–å™?br /> remoteSort : boolean,    //˜qœç¨‹æŽ’序?
sortInfo : Object,    //{field: "fieldName", direction: "ASC|DESC"}˜q™æ ·çš„æŽ’序对è±?br /> url : String,        //利用url构造HttpProxy
}

add( Ext.data.Record[] records ) : void
增加记录records 到store

addSorted( Ext.data.Record record ) : void
增加record到storeòq¶æŽ’åº?仅本地排序时有用)

clearFilter( Boolean suppressEvent ) : void
清除˜q‡æ×oå™?br />
collect( String dataIndex, [Boolean allowNull], [Boolean bypassFilter] ) : Array
攉™›†ç”±dataIndex指定字段的惟一å€?br />
commitChanges() : void
提交Store所有的变更,会引发Update事äšg


filter( String field, String/RegExp value, [Boolean anyMatch], [Boolean caseSensitive] ) : void
讑֮š˜q‡æ×oå™?br /> field:String    //字段å?br /> value:String    //RegExp 如果是字½W¦å™¨,‹‚€æŸ¥field是否以valueå¼€å§?如果是正åˆ?‹‚€æŸ¥æ˜¯å¦åŒ¹é…?br /> anyMatch:Boolean //匚w…ä»ÖM½•部分而不仅ä×o是开å§?br /> caseSensitive:Boolean //大小写敏æ„?

filterBy( Function fn, [Object scope] ) : void
更强悍的˜q‡æ×oæ–ÒŽ³•.fn接收两个参数recordå’Œid

find( String property, String/RegExp value, [Number startIndex], [Boolean anyMatch], [Boolean caseSensitive] ) : Number
扑ֈ°½W¦åˆæ¡äšg的第一条记å½?参数同filter

findBy( Function fn, [Object scope], [Number startIndex] ) : Number
参见filterBy

getAt( Number index ) : Ext.data.Record
getById( String id ) : Ext.data.Record
依充�id得到record对象

getCount() : void
得到记录�br />
getModifiedRecords() : Ext.data.Record[]
得到修改˜q‡çš„记录é›?br />
getRange( [Number startIndex], [Number endIndex] ) : Ext.data.Record[]
得到指定范围的记录集�br />
getSortState() : void
得到排序状æ€?昄¡„¶ä¸æ˜¯void而是˜q”回一个排序对è±?同sortInfo一æ ïLš„¾l“æž„{field: "fieldName", direction: "ASC|DESC"}

getTotalCount() : void
˜q™ä¸ªå¯¹äºŽ¾˜»é¡µä¿¡æ¯˜q˜æ˜¯å¾ˆæœ‰ç”¨çš„

indexOf( Ext.data.Record record ) : Number
indexOfId( String id ) : Number
ç”Þp®°å½•或id得到序号

insert( Number index, Ext.data.Record[] records ) : void
在指定的位置插入记录,òq¶å¼•发add事äšg

isFiltered() : Boolean
当前讄¡½®äº†è¿‡æ»¤å™¨åˆ™è¿”回真

load( Object options ) : void
由指定的Proxy使用指定的readerè¯Õd–˜qœç¨‹æ•°æ®
options定义�br /> {
    params :Object,    //è¯äh±‚url需要附加的参数
    callback :Function//回叫æ–ÒŽ³•,接收三个参数
    //r : Ext.data.Record[] //˜q”回的record数组
    //options: Options loadæ–ÒŽ³•传入的options
    //success: Boolean //成功
    scope :Object, //范围.默认是store本èín
    add :Boolean ˜q½åŠ ˜q˜æ˜¯æ›´æ–°
}

loadData( Object data, [Boolean append] ) : void
用法比load½Ž€å•一ç‚?目的是一æ ïLš„,只是˜q™æ¬¡æ•°æ®ç”±æœ¬åœ°è¯»å?br />
query( String field, String/RegExp value, [Boolean anyMatch], [Boolean caseSensitive] ) : MixedCollection
queryBy( Function fn, [Object scope] ) : MixedCollection
查询,参数和find¾cÖM¼¼,但返回所有符合条件的record,而不是第一个符合条件记录的序号

rejectChanges() : void
攑ּƒæ‰€æœ‰çš„变更

reload( [Object options] ) : void
重新载入,相当äº?load(options,false),如果˜qžoptions都没有传å…?则取最后一‹Æ¡loadæ—¶ä‹É用的参数

remove( Ext.data.Record record ) : void
¿U»é™¤æŒ‡å®šè®°å½•

removeAll() : void
¿U»é™¤æ‰€æœ‰è®°å½?br />
setDefaultSort( String fieldName, [String dir] ) : void
讄¡½®é»˜è®¤æŽ’序规则

sort( String fieldName, [String dir] ) : void
排序

sum( String property, Number start, Number end ) : Number
对property字段由start开始到end求和

事äšg列表
add : ( Store this, Ext.data.Record[] records, Number index )
beforeload : ( Store this, Object options )
clear : ( Store this )
datachanged : ( Store this )
load : ( Store this, Ext.data.Record[] records, Object options )
loadexception : ()
metachange : ( Store this, Object meta. )
remove : ( Store this, Ext.data.Record record, Number index )
update : ( Store this, Ext.data.Record record, String operation )
看名字都很简�参数也不复杂,略过

用例
//得到˜qœç¨‹json对象
//其中jsoncallback.js内容�br /> //{ 'results': 2, 'rows': [
//    { 'id': 1, 'name': 'Bill', occupation: 'Gardener' },
//    { 'id': 2, 'name': 'Ben', occupation: 'Horticulturalist' } ]
//}
//定义proxy
      var proxy=new Ext.data.HttpProxy(...{url:'jsoncallback.js'});
//定义reader
      var reader=new Ext.data.JsonReader(
        ...{
        totalProperty: "results",//totalRecords属性由json.results得到
        root: "rows",            //构造元数据的数¾l„ç”±json.rows得到
        id: "id"                //idç”±json.id得到
        },[
        ...{name: 'name', mapping: 'name'},
        ...{name: 'occupation'}            //如果name与mapping同名,可以省略mapping
        ]
    )
//构徏Store  
    var store=new Ext.data.Store(...{
      proxy:proxy,
      reader:reader
   });
//载入
store.load();

½CÞZ¾‹2
//得到˜qœç¨‹xmlæ–‡äšg
//其中xmlæ–‡äšg内容ä¸?br /> <?xml version="1.0" encoding="utf-8" ?>
<dataset>
<results>2</results>
<row>
    <id>1</id>
    <name>Bill</name>
    <occupation>Gardener</occupation>
</row>
<row>
    <id>2</id>
    <name>Ben</name>
    <occupation>Horticulturalist</occupation>
</row>
</dataset>

var proxy=new Ext.data.HttpProxy(...{url:'datasource.xml'});
  
    var reader = new Ext.data.XmlReader(...{
       totalRecords: "results",
       record: "row",       
       id: "id"               
    }, [
       ...{name: 'name', mapping: 'name'},
       ...{name: 'occupation'}          
    ]);
   var store=new Ext.data.Store(...{
      proxy:proxy,
      reader:reader
   });
store.load();

½CÞZ¾‹3
//从本地数¾l„å¾—åˆ?/span>
var arr=[ [1, 'Bill', 'Gardener'], [2, 'Ben', 'Horticulturalist'] ];
var reader = new Ext.data.ArrayReader(
   
...{id: 0},
    [
    
...{name: 'name', mapping: 1},        
    
...{name: 'occupation', mapping: 2}   
     ]);
   
    
var store=new Ext.data.Store(...{
       reader:reader
    }
);
    store.loadData(arr);


]]>
[转蝲]EXT核心API详解(�Ext.data-DataReader/ArrayReader/JsonReader/XmlReader javascripthttp://www.aygfsteel.com/super2/archive/2008/10/30/237572.html淘声依旧淘声依旧Thu, 30 Oct 2008 04:19:00 GMThttp://www.aygfsteel.com/super2/archive/2008/10/30/237572.htmlhttp://www.aygfsteel.com/super2/comments/237572.htmlhttp://www.aygfsteel.com/super2/archive/2008/10/30/237572.html#Feedback0http://www.aygfsteel.com/super2/comments/commentRss/237572.htmlhttp://www.aygfsteel.com/super2/services/trackbacks/237572.htmlExt.data.DataReader
¾U¯è™š¾c?从数据源得到¾l“构化数据è{æ¢äØ“å…ƒæ•°æ®å¯¹è±?对象包含Record的集å?一般用做Store对象的元数据,
å…ähœ‰å¦‚下格式
{
totalRecord:int,
records:Array of Ext.data.Record
}
具体使用参见三个子类
Ext.data.ArrayReader/Ext.data.JsonReader/Ext.data.XmlReader


æ–ÒŽ³•
DataReader( Object meta, Object recordType )
构�br />
Ext.data.ArrayReader
用于è¯ÀL•°¾l„到一个元数据对象

ArrayReader( Object meta, Object recordType )
æž„é€?½W¬ä¸€ä¸ªå‚数是配置除了可以指示使用哪个字段做idå¤?不懂其它的用æ³?
½W¬äºŒä¸ªå‚数是recordType与record对象的createæ–ÒŽ³•的参æ•îC¸€æ ?是一样config对象数组,具体参见
readRecords( Object o ) : Object
è¯Õd–o,˜q”回一个元数据对象

用例½Cø™Œƒ:
//定义数组
var arr=[ [1, 'Bill', 'Gardener'], [2, 'Ben', 'Horticulturalist'] ];
var reader = new Ext.data.ArrayReader(
//以第一个元素做为recordid
   {id: 0},
//定义数组到record的映ž®„å…³¾p?br />    [
    {name: 'name', mapping: 1},        
    {name: 'occupation', mapping: 2}   
   ]
);
//生成元数�br /> var data=reader.readRecords(arr);

Ext.data.JsonReader
用于ž®†ä¸€ä¸ªjson对象转换为元数据对象

JsonReader( Object meta, Object recordType )
JsonReader的构造参数meta可以有更多选择,
{
id : String,
root : String,
successProperty : String,
totalProperty : String
}
都是对应json对象的属性名

read( Object response ) : Object
从一个response对象˜q”回,response.responseText属性应仅含有一个json格式数据å?br />
readRecords( Object o ) : Object
è¯Õd–o,˜q”回一个元数据对象

使用½CÞZ¾‹:
     var json={ 'results': 2, 'rows': [
    { 'id': 1, 'name': 'Bill', occupation: 'Gardener' },
    { 'id': 2, 'name': 'Ben', occupation: 'Horticulturalist' } ]
};
    var reader=new Ext.data.JsonReader(
        {
        totalProperty: "results",//totalRecords属性由json.results得到
        root: "rows",            //构造元数据的数¾l„ç”±json.rows得到
        id: "id"                //idç”±json.id得到
        },[
        {name: 'name', mapping: 'name'},
        {name: 'occupation'}            //如果name与mapping同名,可以省略mapping
        ]
    )
    var data=reader.readRecords(json);



Ext.data.XmlReader
xmlreaderå¯¹è±¡å½“ç„¶æ˜¯äØ“xml而准备的

构�
XmlReader( Object meta, Mixed recordType )
meta与jsonreader¾cÖM¼¼,
meta是一个{
    id : String,
    record : String,
    success : String,
    totalRecords : String
}对象,只是˜q™äº›å­—符串都是相对于文档根目录的domquery路径
read( Object response ) : Object
readRecords( Object doc ) : Object
....


var str=["<?xml version=\"1.0\" encoding=\"utf-8\" ?>",
    "<dataset>",
"<results>2</results>",
"<row>",
   "<id>1</id>",
   "<name>Bill</name>",
   "<occupation>Gardener</occupation>",
"</row>",
"<row>",
   "<id>2</id>",
   "<name>Ben</name>",
   "<occupation>Horticulturalist</occupation>",
"</row>",
"</dataset>"].join("");

//生成xmldocument对象
var xmlDocument;
if(Ext.isIE){
    xmlDocument = new ActiveXObject("Msxml2.FreeThreadedDOMDocument")
    xmlDocument.async=false;
    xmlDocument.resolveExternals = false;
    xmlDocument.loadXML(str)
}
else{
   xmlDocument = (new DOMParser()).parseFromString(str, "text/xml");
}

//然后开å§?..和其它两个reader一æ ïLš„用法,只是˜q™å„¿æ¢äº†ä¸€¿Uå†™æ³?recordtype也可以是一个record对象
var record = Ext.data.Record.create([
   {name: 'name', mapping: 'name'},     // "mapping" property not needed if it's the same as "name"
   {name: 'occupation'}                 // This field will use "occupation" as the mapping.
])
var reader = new Ext.data.XmlReader({
   totalRecords: "results",
   record: "row",           //row是节炚w€‰æ‹©å™?br />    id: "id"                
}, record);
var data=reader.readRecords(xmlDocument);

淘声依旧 2008-10-30 12:19 发表评论
]]>
[转蝲]EXT核心API详解(�Ext.data- Connection/Ajax/Record javascript http://www.aygfsteel.com/super2/archive/2008/10/30/237570.html淘声依旧淘声依旧Thu, 30 Oct 2008 04:18:00 GMThttp://www.aygfsteel.com/super2/archive/2008/10/30/237570.htmlhttp://www.aygfsteel.com/super2/comments/237570.htmlhttp://www.aygfsteel.com/super2/archive/2008/10/30/237570.html#Feedback0http://www.aygfsteel.com/super2/comments/commentRss/237570.htmlhttp://www.aygfsteel.com/super2/services/trackbacks/237570.htmlExt.data.Connection
讉K—®æŒ‡å®šçš„url,˜q™æ˜¯ä¸ªå¼‚步调用类,如果惛_¾—到服务器信息,请在request参数中指定callbackæ–ÒŽ³•或指定侦听è€?å¯ÒŽ–‡ä»¶ä¸Šä¼ æ— æ•?

Connection( Object config )
构�config定义为{
autoAbort : Boolean,
defaultHeaders : Object,
disableCaching : Boolean,
extraParams : Object,
method : String,
timeout : Number,
url : String
}
对象

æ–ÒŽ³•:ç”?nbsp;  Observable¾l§æ‰¿˜q‡æ¥çš„æ–¹æ³•省ç•?br /> abort( [Number transactionId] ) : void
攑ּƒè¯äh±‚,如果同时有多个请求发ç”?参数指示è¯äh±‚˜q›ç¨‹åºå·,不指定则是放弃最后一个请æ±?br />
isLoading( [Number transactionId] ) : Boolean
½W¬transactionId个请求是否完成蝲å…?未批定指最后一ä¸?br />
request( [Object options] ) : Number
最实用的当然是˜q™ä¸ªæ–ÒŽ³•äº?˜q”回的正是前面的两个æ–ÒŽ³•所需要的˜q›ç¨‹id
其中options定义为{
url:string,   //è¯äh±‚url
params:Object/String/Function, //以postæ–ÒŽ³•è¯äh±‚时传递的参数
method:string ,       //Get/Post
callback:Function,   //回叫æ–ÒŽ³•,不管是成功还是失败都会呼叫这个方æ³?有三个参æ•?ç”±options传入的options参数,success:Boolean,成功? response:Object, 含有˜q”回数据的XMLHttpRequest对象
success:Function,   //成功时回å?½W¬ä¸€ä¸ªå‚æ•îCØ“XMLHttpRequest对象,½W¬äºŒä¸ªå‚æ•îC¼ å…¥æŒ‡å®šçš„options
failure:Function,   //å¤ÞpÓ|时回å?参数同success
scope:Object,       //范围
form.:Object/String,   //一个form对象或它的id,可以由此自动生成参数params
isUpload:Boolean,   //æ–‡äšg上传?通常可以自动‹‚€‹¹?br /> headers:Object,       //要自定义的请求头信息
xmlData:Object       //一个xml文档对象,它将通过url附加参数的方式发赯‚¯·æ±?br /> disableCaching:Boolean   //是否¼›ç”¨¾~“å­˜?默认为真
}

Ext.Ajax
ç”±Ext.data.Connection ¾l§æ‰¿è€Œæ¥,æ–ÒŽ³•和父¾cÖM¸€æ¨¡ä¸€æ ?但ä‹É用è“v来更½Ž€å•一äº?是一个全局惟一静态类
½CÞZ¾‹:
Ext.Ajax.request({
   url: 'foo.php',
   success: someFn,
   failure: otherFn,
   headers: {
       'my-header': 'foo'
   },
   params: { foo: 'bar' }
});


Ext.Ajax.request({
    form. 'some-form',
    params: 'foo=bar'
});

//所有的Ext.Ajaxè¯äh±‚都会加个˜q™ä¸ªé»˜è®¤çš„头
Ext.Ajax.defaultHeaders = {
    'Powered-By': 'Ext'
};

//所有的Ext,Ajax在发赯‚¯·æ±‚前都会调用showSpinner
Ext.Ajax.on('beforerequest', this.showSpinner, this);


Ext.data.Record
åŸºæœ¬ä¸Šå¯ä»¥ç†è§£äØ“.net中的datarow或者sql server中的一行数据,它存放了数据的定义信息和他们的å€?br /> [公有属性]
data : Object       数据内容åQŒä¸€ä¸ªjson对象
dirty : Boolean       是否修改˜q?br /> id : Object       惟一ID,默认ä»?000开始以1剃增
modified : Object   如果记录没有修改˜q‡ï¼Œä¸ºnull如果修改˜q‡åˆ™å­˜æ”¾åŽŸå§‹å€ég¿¡æ?br /> [公有æ–ÒŽ³•]
Record( Array data, [Object id] )
˜q™ä¸ªæž„é€ æ–¹æ³•åÆˆä¸ç”¨äºŽåˆ›å»ø™®°å½•对象,相反åQŒåº”该ä‹É用createæ–ÒŽ³•来创建record对象,参数data定义见createæ–ÒŽ³•,id默认递增起始id

beginEdit() : void
开始修�br />
cancelEdit() : void
攑ּƒæ‰€åšçš„修改,参见commit

copy( [String id] ) : Record
//创徏当前record的一个克隆�如果未指定id使用当前id+1

commit( [Boolean silent] ) : void
commitæ–ÒŽ³•一般会被Store对象调用而不是recorde本èín,提交自创建或最后一‹Æ¡ä¿®æ”¹åŽçš„æ‰€æœ‰å˜æ›?如果silent为真ž®†ä¸ä¼šé€šçŸ¥store对象


create( [Array o] ) : function
静态构造方�o是config数组
其中config可以含有如下属�br /> {
name : String   //字段å?br /> mapping : String //用于reader时的映射关系åQŒå¦‚果是用于jsonreaderåQŒä‹É用相对当前记录的javascript表达å¼?br />        //,如果是用于xmlreader,则是相对于记录的domquery表达å¼?对于ArrayReader,则是序号
type:String   //可选å€?auto /string/int/float/boolean/date,其中auto是默认å€û|¼Œä¸è¿›è¡Œè{æ?br /> sortType : Mixed //排序¾cÕdž‹,Ext.data.SortTypes成员之一,参见sortTypes
sortDir : String //正序倒序 ASC/DESCå€ég¹‹ä¸€
convert : Function   //转换函数,˜q™ä¸ªåŠŸèƒ½å¾ˆæœ‰ç”¨ï¼Œå¯è‡ªå®šä¹‰åQŒæŽ¥æ”¶å½“前value˜q”回处理后的value
dateFormat : String   //日期格式化字½W¦ä¸²,convert:function的一个特例,使用Date.parseDateæ–ÒŽ³•转换当前日期
}


endEdit() : void
¾l“束修改

get( name {String} ) : Object
指定命名字段string的�br />
getChanges() : Object
˜q”回修改记录的对è±?br />
reject( [Boolean silent] ) : void
å’Œcommitç›æ€¼¼åQŒå½“然是拒绝所做的修改

set( String name, Object value ) : void
为字ŒDµnameè®‘Ö®šæ–°å€¼value

淘声依旧 2008-10-30 12:18 发表评论
]]>
[转蝲]EXT核心API详解(�Ext.data-DataProxy/HttpProxy/MemoryProxy/ScriptTagProxy javascript http://www.aygfsteel.com/super2/archive/2008/10/30/237571.html淘声依旧淘声依旧Thu, 30 Oct 2008 04:18:00 GMThttp://www.aygfsteel.com/super2/archive/2008/10/30/237571.htmlhttp://www.aygfsteel.com/super2/comments/237571.htmlhttp://www.aygfsteel.com/super2/archive/2008/10/30/237571.html#Feedback0http://www.aygfsteel.com/super2/comments/commentRss/237571.htmlhttp://www.aygfsteel.com/super2/services/trackbacks/237571.htmlExt.data.DataProxy
数据代理¾cÀL˜¯ä¸€ä¸ªçº¯è™šç±»åQŒä¸»è¦ç”¨äºŽç”ŸæˆExt.data.Record对象åQŒæ²¡æœ‰å…¬å¼€çš„属性和æ–ÒŽ³•åQŒåªæ˜¯å½’定子¾c»éœ€è¦å¤„理三个事ä»?br /> beforeload : ( Object This, Object params )
load : ( Object This, Object o, Object arg )
loadexception : ( Object This, Object o, Object arg, Object e )
事实上参æ•îC¹Ÿæ˜¯å­¾c»è‡ªå®šä¹‰çš?br />
Ext.data.HttpProxy
api文档中说httpProxy是从object¾l§æ‰¿æ¥çš„åQŒäº‹å®žä¸Šsource中它和下面的Ext.data.MemoryProxy/Ext.data.ScriptTagProxy都ç‘ô承于DataProxy
HttpProxy用于˜qœç¨‹ä»£ç†,而且服务端返回信息时必须指定Content-Typeå±žæ€§äØ“"text/xml".

HttpProxy( Object conn )
构造一个HttpProxy对象,参数可以是一个类ä¼égºŽ{url: 'foo.php'}˜q™æ ·çš„json对象,也可以是一个Ext.data.Connection对象,如果参数没有指定åQŒå°†ä½¿ç”¨Ext.Ajax对象ž®†è¢«ç”¨äºŽå‘è“vè¯äh±‚

getConnection() : Connection
得到当前˜qžæŽ¥å¯¹è±¡

load( Object params, Ext.data.DataReader reader, Function callback, Object scope, Object arg ) : void
从配¾|®çš„connection对象得到record数据块,òq¶æ¿€å‘callback
params:        发è“vhttpè¯äh±‚时所要传递到服务端的参数
DataReader:    见DataReader
callback:    回叫æ–ÒŽ³•,½W¬ä¸€ä¸ªå‚æ•îCؓ接收到的信息,½W¬äºŒä¸ªå‚æ•îCØ“arg,½W¬ä¸‰ä¸ªæ˜¯æˆåŠŸæ ‡å¿—
scope:        范围
arg:        ˜q™å„¿çš„参数将会传递给回叫函数callback

使用½CÞZ¾‹:
var proxy=new Ext.data.HttpProxy({url:'datasource.xml'});
    //关于readerž®†ä¼šåœ¨Ext.data.DataReader中讲è§?br />     var reader = new Ext.data.XmlReader({
       totalRecords: "results",
       record: "row",        
       id: "id"                
    }, [
       {name: 'name', mapping: 'name'},
       {name: 'occupation'}           
    ]);
   
    //定义回叫æ–ÒŽ³•
    var metadata;
    function callback(data,arg,success){
        if(success){
            metadata=data;
        }
    }
    //从connection配置的url中利用readerž®†è¿”回的xmlæ–‡äšgè½¬äØ“å…ƒæ•°æ?òq¶ä¼ é€’ç»™callback
    proxy.load( null,reader,callback,this);

Ext.data.MemoryProxy
MemoryProxy( Object data )
构�br /> load( Object params, Ext.data.DataReader reader, Function callback, Object scope, Object arg ) : void
取数据,和HttpProxy¾cÖM¼¼,只是params参数没有被ä‹Éç”?br />
使用½CÞZ¾‹
var proxy=new Ext.data.MemoryProxy([ [1, 'Bill', 'Gardener'], [2, 'Ben', 'Horticulturalist'] ]);
var reader = new Ext.data.ArrayReader(
{id: 0},
[
{name: 'name', mapping: 1},        
{name: 'occupation', mapping: 2}   
]);

var metadata;
function callback(data,arg,success){
    metadata=data;
}
proxy.load( null,reader,callback,this);


Ext.data.ScriptTagProxy
˜q™ä¸ª¾cÕd’ŒHttpProxy¾cÖM¼¼åQŒä¹Ÿæ˜¯ç”¨äºŽè¯·æ±‚远½E‹æ•°æ?但能用于跨主域调ç”?如果è¯äh±‚æ—¶ä‹É用了callback参数
则服务端应指定Content-Typeå±žæ€§äØ“"text/javascript"
òq¶è¿”回callback(jsonobject)
反之则应¾|®Content-Typeå±žæ€§äØ“"application/x-json"
òq¶ç›´æŽ¥è¿”回json对象

ScriptTagProxy( Object config )
构�其中
config定义为{
callbackParam : String,    //回叫参数
nocache : Boolean,    //是否¾~“å­˜
timeout : Number,    //­‘…æ—¶
url : String        //è¯äh±‚数据的url
}

abort() : void
攑ּƒ

淘声依旧 2008-10-30 12:18 发表评论
]]>
[转蝲]EXT核心API详解(�-Ext.KeyNav/KeyMap/JSON/Format/DelayedTask/TaskRunner/TextMetrics/XTemplate http://www.aygfsteel.com/super2/archive/2008/10/30/237569.html淘声依旧淘声依旧Thu, 30 Oct 2008 04:17:00 GMThttp://www.aygfsteel.com/super2/archive/2008/10/30/237569.htmlhttp://www.aygfsteel.com/super2/comments/237569.htmlhttp://www.aygfsteel.com/super2/archive/2008/10/30/237569.html#Feedback0http://www.aygfsteel.com/super2/comments/commentRss/237569.htmlhttp://www.aygfsteel.com/super2/services/trackbacks/237569.htmlExt.KeyNav
Extçš„keyNav¾c»èƒ½ä¸ºExt.Element元素提供½Ž€å•的按键处理æ–ÒŽ³•
ä¾?
var el=Ext.get("textarea");
new Ext.KeyNav(el, {
    "left" : function(e){
        alert("left key down");
        },
    scope : el
    }
);
å®ƒçš„è¡ŒäØ“ä¸ŽKeyMap¾cÖM¼¼åQŒä½†åŠŸèƒ½æ¯”KeyMap要弱ž®çš„多,只能处理以下已定义键
enter/left/right/up/down/tab/esc/pageUp/pageDown/del/home/end
同情一下KeyNav

æ–ÒŽ³•只有三个,不用多解é‡?br /> KeyNav( Mixed el, Object config )
disable() : void
enable() : void

Ext.KeyMap¾c?/span>
则强悍的å¤?其中最重要的当然是å¯ÒŽŒ‰é”®çš„定义更灵‹z?br /> ä¾?上例用KeyMap来写可能æ˜?br /> var el=Ext.get("textarea");
new Ext.KeyMap(el, {
        key:Ext.EventObject.LEFT,
        fn: function(e){
            alert("left key down");
        },
        scope : el
    }
);

æ–ÒŽ³•
KeyMap( Mixed el, Object config, [String eventName] )
æž„é€?与KeyNav也相ä¼û|¼Œä½†æ›´ç‰|´»
它是{
key:        String/Array,     //可以是数字,字符åQŒä¹Ÿå¯ä»¥æ˜¯Ext.EventObject.LEFT˜q™æ ·çš„助记符,˜q˜èƒ½æ˜¯ä»–们组成的数组
shift:       Boolean,          //ctrl键按ä¸?
ctrl:        Boolean,
alt :        Boolean,
fn :        Function,         //回叫æ–ÒŽ³•
scope:       Object          //范围
}˜q™æ ·çš„对象或它们¾l„成的数¾l?br /> 比如{key: 10},{key: [10,13]},{key:'\t'},{key:'abcd'},{key:Ext.EventObject.LEFT}都是合法的定ä¹?br />
addBinding( Object/Array config ) : void
增加新的¾l‘定动作 config参见构é€?br />
disable() : void
enable() : void
isEnabled() : Boolean
允许åQŒé™æ­¢å’ŒçŠ¶æ€æŸ¥è¯?br />
on( Number/Array/Object key, Function fn, [Object scope] ) : void
只添加一个处理时addBinding的快æäh–¹å¼?ä½†ä¸ªäººæ„Ÿè§‰åÆˆæ²¡æœ‰½Ž€å•到哪儿厅R€?br />

Ext.util.JSON
轮到大名鼎鼎的JSON了,可惜Ext提供的JSON对象功能好弱ž®ï¼Œåªæœ‰encode主decode两个æ–ÒŽ³•
而且只能¾~–码String/Array/Date,臛_°‘也要搞个 xml2json/json2xmlæ–ÒŽ³•å‘€

Ext.util.Format
主要提供了一些格式化æ–ÒŽ³•

capitalize( String value ) : String
首字母大�br />
date( Mixed value, [String format] ) : String
格式化日期输å‡?˜q˜æ˜¯Date.formatæ–ÒŽ³•好用

dateRenderer( String format ) : Function
˜q”回一个利用指定format格式化日期的æ–ÒŽ³•

defaultValue( Mixed value, String defaultValue ) : String
如果value未定义或为空字符串则˜q”回defaultValue

ellipsis( String value, Number length ) : String
如果value的长度超˜q‡lengthçš?取前length-3ä¸ªåÆˆç”?..替代åQŒå¯¹ä¸­å›½äººæ¥è¯´è¿˜æ˜¯åžƒåœ‘ÖŠŸèƒ½ï¼Œç”¨çš„字符串长度不是字节长åº?br />
fileSize( Number/String size ) : String
½Ž€å•的格式化文仉™•¿åº¦äØ“ xxxbytes xxxKB xxxMB,没有GBå“?br />
htmlEncode( String value ) : String
htmlDecode( String value ) : String
HTML¾~–码解码,ž®?amp; < > “替换ä¸?amp;amp;&lt;&gt;&quot;

lowercase( String value ) : String
ž®†value转换为全ž®å†™

stripScripts( Mixed value ) : String
去除脚本标签

stripTags( Mixed value ) : String
去除HTML标签

substr( String value, Number start, Number length ) : String
取子字符�br />
trim( String value ) : String
去除开头和¾l“尾的空æ ?br />
undef( Mixed value ) : Mixed
如果value未定ä¹?˜q”回½Iºå­—½W¦ä¸²åQŒåä¹‹è¿”回value本èín

uppercase( String value ) : String
è½¬äØ“å…¨å¤§å†?br />
usMoney( Number/String value ) : String
è½¬äØ“¾ŸŽå…ƒè¡¨ç¤º

Ext.util.DelayedTask
提供一个setTimeout的简单替代方�br />
公开的方法也只有三个
DelayedTask( [Function fn], [Object scope], [Array args] )
delay( Number delay, [Function newFn], [Object newScope], [Array newArgs] ) :
cancel() : void
½Ž€å•çš„½CÞZ¾‹ç”¨æ³•如果
var task=new Ext.util.DelayedTask(Ext.emptuFn);
task.delay(1000);
task.cancel();

Ext.util.TaskRunner
增强版的DelayedTask,能提供多¾U¿ç¨‹çš„定时服务,
ä¾?
var task = {
    run: function(){
        Ext.fly('clock').update(new Date().format('g:i:s A'));
    },
    interval: 1000
}
var runner = new Ext.util.TaskRunner();
runner.start(task);

四个æ–ÒŽ³•都很½Ž€å?br /> TaskRunner( [Number interval] )
start( [Object task] ) : Object
stop( Object task ) : Object
stopAll() : void


Ext.util.TextMetrics
˜q™ä¸ª¾cÖM¸»è¦æ˜¯ä¸ÞZº†å‡†å¤‡çš„得到块状化文本正确的高度和宽度
ä¾?
var metrics=Ext.util.TextMetrics.createInstance('div');
metrics.setFixedWidth(100);
var size=metrics.getSize("中华人民共和国中华äh民共和国中华人民共和国中华äh民共和国");
Ext.MessageBox.alert("getsize",String.format("width:{0}px\theight:{1}px",size.width,size.height))

æ–ÒŽ³•
bind( String/HTMLElement el ) : void
¾l‘定到el

createInstance( String/HTMLElement el, [Number fixedWidth] ) : Ext.util.TextMetrics.Instance
为el创徏TextMetrics实例

getHeight( String text ) : Number
getSize( String text ) : Object
getWidth( String text ) : Number
得到ž®ºå¯¸

measure( String/HTMLElement el, String text, [Number fixedWidth] ) : Object
‹¹‹ç®—文本text在el中将要占用的ž®ºå¯¸

setFixedWidth( Number width ) : void
讄¡½®æŒ‡å®šçš„宽åº?br />
Ext.XTemplate
增强型模板,支持更多功能了,虽然æ–ÒŽ³•不多åQŒä½†ç”¨è“v来来˜q˜çœŸçš„很éºÈƒ¦åQŒä½†òq¶ä¸å»ø™®®å¤§å®¶å­¦ä¹ ˜q™æ ·çš„自定义语法åQŒä¸å¦‚用xslt
另外˜q™ä¸ªXtemplate虽然命名½Iºé—´åœ¨Ext之下åQŒä½†æºæ–‡ä»¶å´æ˜¯æ”¾åœ¨util目录中的
XTemplate( String/Array html )
XTemplate.from( String/HTMLElement el ) : Ext.XTemplate
apply() : void
applyTemplate( Object values ) : String
compile() : Function
˜q™äº›æ–ÒŽ³•Ext.Template中都有说明,

]]>
[转蝲]EXT核心API详解(�-Ext.EventManager/EventObject/CompositeElement/CompositeElementLite http://www.aygfsteel.com/super2/archive/2008/10/30/237567.html淘声依旧淘声依旧Thu, 30 Oct 2008 04:16:00 GMThttp://www.aygfsteel.com/super2/archive/2008/10/30/237567.htmlhttp://www.aygfsteel.com/super2/comments/237567.htmlhttp://www.aygfsteel.com/super2/archive/2008/10/30/237567.html#Feedback0http://www.aygfsteel.com/super2/comments/commentRss/237567.htmlhttp://www.aygfsteel.com/super2/services/trackbacks/237567.htmlExt.EventManager
事äšg½Ž¡ç†è€…中的大部分æ–ÒŽ³•都在Ext中有定义,主要用于事äšg½Ž¡ç†


addListener( String/HTMLElement el, String eventName, Function handler,
on( String/HTMLElement el, String eventName, Function handler, [Object scope], [Object options] ) : void
onDocumentReady( Function fn, [Object scope], [boolean options] ) : void
removeListener( String/HTMLElement el, String eventName, Function fn ) :
un( String/HTMLElement el, String eventName, Function fn ) : Boolean
参见Ext

onWindowResize( Function fn, Object scope, boolean options ) : void
½H—口大小变更时触å?br />
onTextResize( Function fn, Object scope, boolean options ) : void
‹zÕdŠ¨æ–‡æœ¬ž®ºå¯¸å˜æ›´æ—¶è§¦å?br />


Ext.EventObject
˜q™ä¸¤ä¸ªç±»éƒ½å®šä¹‰åœ¨EventManager.jsä¸­ï¼Œåˆ†å¼€æ˜¯äØ“äº†é€»è¾‘ä¸Šæ›´æ¸…æ™°å?˜q™ä¸ª¾cÖM¸»è¦ç”¨äºŽæ˜qîCº‹ä»¶æœ¬íw«ï¼Œä¸€èˆ¬ç”¨åšäº‹ä»¶å¤„理方法的参数
另外˜q™ä¸ªå®›_®šä¹‰äº†ä¸€äº›é”®å€¼å¸¸é‡ï¼Œæ¯”ascii码好è®?br /> ä¾?br /> function handleClick(e){ // ˜q™å„¿çš„ež®±æ˜¯ä¸€ä¸ªEventObject对象
    e.preventDefault();
    var target = e.getTarget();
    ...
}
var myDiv = Ext.get("myDiv");
myDiv.on("click", handleClick);
//or
Ext.EventManager.on("myDiv", 'click', handleClick);
Ext.EventManager.addListener("myDiv", 'click', handleClick);

getCharCode() : Number
getKey() : Number
在非webkit|khtml¾cÕdž‹¾|‘页中这两个æ–ÒŽ³•是一æ ïLš„åQŒå¾—到按键的å€?br />
getPageX() : Number
getPageY() : Number
getXY() : Array
得到事äšg坐标

getRelatedTarget() : HTMLElement
得到兌™”目标?我æ€ÀL˜¯å¾—到null

getTarget( [String selector], [Number/Mixed maxDepth], [Boolean returnEl] ) :
如果没有定义selector则直接返回target属æ€?如果定义了selectoråQŒåˆ™åˆ©ç”¨selectorå¯ÀL‰¾¼œ–先节点

getTime() : Number
得到事äšg发生的时é—?

getWheelDelta() : Number
应该是个˜q‡æ—¶çš„æ–¹æ³•,反正在ie和火狐下都不知道做什么用çš?原意应该是得到鼠标的按键信息åQ?br />
hasModifier() : Boolean
事äšg发生时是否同时按下了ctrl/alt/shift键之一åQ?br />
preventDefault() : void
é˜ÀL­¢‹¹è§ˆå™¨çš„默认事äšgåQ?br />
stopEvent() : void
preventDefault+stopPropagation

stopPropagation() : void
é˜ÀL­¢äº‹äšg冒æˆö

within( Mixed el, [Boolean related] ) : Boolean
如果事äšg的目标是el或者它的子节点ž®†è¿”回真


Ext.CompositeElement¾c?/span>
基础的复合元素类,为容器中每个元素创徏一个Ext.Element对象
虽然不是¾l§æ‰¿è‡ªExt.ElementåQŒä½†äº‹å®žä¸Šå®ƒå‡ ä¹Žæ”¯æŒElement¾cÈš„æ‰€æœ‰æ–¹æ³?br /> ä¾?
var els = Ext.select("#some-el div.some-class", true);
els.setWidth(100);


add( String/Array els ) : CompositeElement
æ·ÕdŠ  css选择器els匚w…çš„å…ƒç´?æˆ?元素¾l„成的数¾l?到当前对è±?br />
clear() : void
清除所有元�br />
contains() : Boolean
应该是contains(Mixed el):Boolean,当前复合元素中是否含有el

each( Function fn, [Object scope] ) : CompositeElement
通过el,this,index参数为每个元素调用fn

fill( String/Array els ) : CompositeElement
clear()& add(els)

filter( String selector ) : CompositeElement
˜q‡æ×o

first() : Ext.Element
½W¬ä¸€ä¸ªå…ƒç´?br />
getCount() : Number
//元素的数�br />
indexOf() : Boolean
同contains一样应该有个Mixed参数

item( Number index ) : Ext.Element
½W¬index个元ç´?br />
last() : Ext.Element
最后一个元�br />
removeElement( Mixed el, [Boolean removeDom] ) : CompositeElement
删除el元素

replaceElement( Mixed el, Mixed replacement, [Boolean domReplace] ) : CompositeElement
替换

Ext.CompositeElementLite
ç”±Ext.CompositeElement¾l§æ‰¿è€Œæ¥åQŒé‡å†™äº†ä¸€äº›æ–¹æ³•,但没看出与父¾cÀLœ‰ä»€ä¹ˆä¸å?br /> addElements /invoke /item /addListener /each /indexOf /replaceElement

]]>
[转蝲]EXT核心API详解(å…?-Ext.Fx http://www.aygfsteel.com/super2/archive/2008/10/30/237568.html淘声依旧淘声依旧Thu, 30 Oct 2008 04:16:00 GMThttp://www.aygfsteel.com/super2/archive/2008/10/30/237568.htmlhttp://www.aygfsteel.com/super2/comments/237568.htmlhttp://www.aygfsteel.com/super2/archive/2008/10/30/237568.html#Feedback0http://www.aygfsteel.com/super2/comments/commentRss/237568.htmlhttp://www.aygfsteel.com/super2/services/trackbacks/237568.htmlExt.Fx¾c?/span>
对于我这æ ïLš„æ‡’鬼而言åQŒFx¾cÀL˜¯æ ¸å¿ƒ¾cÕdº“中最‹È€åЍäh心的一个类åQŒå®ƒä¸æ˜¯æœ€é‡è¦çš„,却是最实用的一个类
定义了一些常用的ç‰ÒŽ•ˆæ–ÒŽ³•,不妨自己多动手试试下面的æ–ÒŽ³•åQŒå¾ˆæœ‰è¶£çš?br />
fadeIn( [Object options] ) : Ext.Element
渐显 options参数有以下属æ€?br /> callback:Function    完成后的回叫æ–ÒŽ³•
scope:Object        目标
easing:String        è¡ŒäØ“æ–ÒŽ³• 默认值是:easeOut,可选值在ext_base中找åˆ?但没有说æ˜?以下内容从yahoo ui中找到的
easeNone:匀é€?br /> easeIn:开始慢且加é€?br /> easeOut:开始快且减é€?br /> easeBoth:开始慢且减é€?br /> easeInStrong:开始慢且加é€?t的四‹Æ¡æ–¹
easeOutStrong:开始快且减é€?t的四‹Æ¡æ–¹
easeBothStrong:开始慢且减é€?t的四‹Æ¡æ–¹
elasticIn:
elasticOut:
elasticBoth:
backIn:
backOut:
backBoth:
bounceIn:
bounceOut:
bounceBoth:
太多,慢慢体会å?br /> afterCls:String        事äšg完成后元素的样式
duration:Number        事äšg完成旉™—´åQˆä»¥¿U’äØ“å•ä½åQ?br /> remove:Boolean        事äšg完成后元素销æ¯?
useDisplay:Boolean    隐藏元素是否使用display或visibility属æ€?
afterStyle:String/Object/Function        事äšg完成后应用样å¼?br /> block:Boolean        块状åŒ?
concurrent:Boolean    ™åºåº˜q˜æ˜¯åŒæ—¶æ‰§è¡ŒåQ?br /> stopFx åQšBoolean    当前效果完成后随合的效果是否ž®†åœæ­¢å’Œ¿U»é™¤

fadeOut( [Object options] ) : Ext.Element
渐隐 fadeOutå’ŒfadeIn能ä‹É用一个特别的endOpacity属性以指示¾l“束时的透明åº?br /> ä¾?el.fadeIn({duration:5,endOpacity:0.7});

frame( [String color], [Number count], [Object options] ) : Ext.Element
è¾ÒŽ¡†å˜äº®æ‰©å±•然后渐隐
ä¾?el.frame("ff0000", 10, { duration: 3 })

ghost( [String anchor], [Object options] ) : Ext.Element
渐渐滑出视图,anchor定义
tl     左上è§?默认)
t      上居ä¸?
tr     右上è§?br /> l      左边界的中央
c      居中
r      双™¾¹ç•Œçš„中央
bl     左下è§?br /> b      下居ä¸?br /> br     右下è§?br /> ä¾?
el.ghost('b', {
    easing: 'easeOut',
    duration: .5
    remove: false,
    useDisplay: false
});

hasActiveFx() : Boolean
指示元素是否当前有特效正在活�br />
hasFxBlock() : Boolean
是否有特效阻塞了

highlight( [String color], [Object options] ) : Ext.Element
高亮昄¡¤ºå½“前元素
ä¾?el.highlight("ffff9c", {
    attr: "background-color", //can be any valid CSS property (attribute) that supports a color value
    endColor: (current color) or "ffffff",
    easing: 'easeIn',
    duration: 1
});


pause( Number seconds ) : Ext.Element
暂停

puff( [Object options] ) : Ext.Element
吹,吹,吹个大气球,元素渐大òq‰™šæ²?br /> ä¾?el.puff({
    easing: 'easeOut',
    duration: .5,
    remove: false,
    useDisplay: false
});

scale( Number width, Number height, [Object options] ) : Ext.Element
¾~©æ”¾
ä¾?el.scale(
    [element's width],
    [element's height], {
    easing: 'easeOut',
    duration: .35
});

sequenceFx()
排队ç‰ÒŽ•ˆ

shift( Object options ) : Ext.Element
位移,òq¶å¯é‡ç½®å¤§å°,透明度等
ä¾?
el.shift({
    width: [element's width],
    height: [element's height],
    x: [element's x position],
    y: [element's y position],
    opacity: [element's opacity],
    easing: 'easeOut',
    duration: .35
});

slideIn( [String anchor], [Object options] ) : Ext.Element
slideOut( [String anchor], [Object options] ) : Ext.Element
滑入/滑出
ä¾?el.slideIn('t', {
    easing: 'easeOut',
    duration: .5
});


stopFx() : Ext.Element
停止ç‰ÒŽ•ˆ

switchOff( [Object options] ) : Ext.Element
æ”¶è“vòq‰™šæ²?br /> ä¾?
el.switchOff({
    easing: 'easeIn',
    duration: .3,
    remove: false,
    useDisplay: false
});


syncFx() : Ext.Element
异步ç‰ÒŽ•ˆ

淘声依旧 2008-10-30 12:16 发表评论
]]>
[转蝲]EXT核心API详解(å›?-Ext.DomQuery/DomHelper/Template http://www.aygfsteel.com/super2/archive/2008/10/30/237566.html淘声依旧淘声依旧Thu, 30 Oct 2008 04:15:00 GMThttp://www.aygfsteel.com/super2/archive/2008/10/30/237566.htmlhttp://www.aygfsteel.com/super2/comments/237566.htmlhttp://www.aygfsteel.com/super2/archive/2008/10/30/237566.html#Feedback0http://www.aygfsteel.com/super2/comments/commentRss/237566.htmlhttp://www.aygfsteel.com/super2/services/trackbacks/237566.htmlExt.DomQuery¾c?/span>
selector语法详见Ext¾c?br />
compile( String selector, [String type] ) : Function
¾~–写一个选择器或xpath查询åˆîC¸€ä¸ªæ–¹æ³•以方便重用,type取select(默认)或simpleå€ég¹‹ä¸€

filter( Array el, String selector, Boolean nonMatches ) : Array
˜q‡æ×oel中的元素,保留½W¦åˆselector的,如果nonMatches为真åQŒç»“果相å?br />
is( String/HTMLElement/Array el, String selector ) : Boolean
验证el是否匚w…selector

select( String selector, [Node root] ) : Array
从root中选择匚w…selector的对象数¾l?br />
selectNode( String selector, [Node root] ) : Element
˜q”回root中第一个匹配selector的对è±?br />
selectNumber( String selector, [Node root], Number defaultValue ) : Number
˜q”回root中第一个匹配selector的对象的节点å€û|¼Œè½¬æ¢ä¸ºæ•´æ•°æˆ–‹¹®ç‚¹æ•?br />
selectValue( String selector, [Node root], String defaultValue ) : void
˜q”回root中第一个匹配selector的对象的节点å€û|¼Œå¦‚果为null,用默认值defaultValue代替

Ext.DomHelper¾c?/span>
append( Mixed el, Object/String o, [Boolean returnElement] ) : HTMLElement/Ext.Element
创徏一个新的DOM元素òq¶æ·»åŠ åˆ°el
参数 o 是一个DOM对象或一个原始html�br />

applyStyles( String/HTMLElement el, String/Object/Function styles ) : void
应用样式styles到对象elåQ?样式的对象表½Cºæ–¹æ³•见Ext.Element

createTemplate( Object o ) : Ext.Template
ç”±o创徏一个新的Ext.Template对象åQŒè¯¦è§?Ext.Template

insertAfter( Mixed el, Object o, [Boolean returnElement] ) : HTMLElement/Ext.Element
insertBefore( Mixed el, Object/String o, [Boolean returnElement] ) : HTMLElement/Ext.Element
创徏一个新的DOM对象oòq¶å°†ä»–们挺入在el之后/之前

insertFirst( Mixed el, Object/String o, [Boolean returnElement] ) :
创徏一个新的DOM元素òq¶åšä¸ºç¬¬ä¸€ä¸ªå­èŠ‚ç‚¹æ·ÕdŠ åˆ°el (看了˜q™ä¸ªinsertFirståQŒå¾è®®å°†append取一个别名insertLast:))

insertHtml( String where, HTMLElement el, String html ) : HTMLElement
where 可选值beforeBegin/afterBegin/beforeEnd/afterEnd
ž®†html代码插入到el附近,

markup( Object o ) : String
˜q”回DOM对象o对应的html代码

overwrite( Mixed el, Object/String o, [Boolean returnElement] ) :
创徏一个新的DOM元素oòq¶ç”¨å®ƒé‡å†™el的内å®?


Ext.Template¾c?/span>
Template¾cÖM¸»è¦æ˜¯åŠŸèƒ½æ˜¯ç”Ÿäº§html片断,ä¾?br /> var t = new Ext.Template(
    '<div name="{id}">',
        '<span class="{cls}">{name:trim} {value:ellipsis(10)}</span>',
    '</div>'
);
t.append('some-element', {id: 'myid', cls: 'myclass', name: 'foo', value: 'bar'});

公用æ–ÒŽ³•:
Template( String/Array html )
构造一个Ext.Template对象åQŒå‚数可以是字符串åŞ式的html代码或它们组成的数组åQ?br />
Template.from( String/HTMLElement el, Object config ) : Ext.Template
能过el的value(优先)或innerHTML来构造模�br />
append( Mixed el, Object values, [Boolean returnElement] ) : HTMLElement/Ext.Element
insertAfter( Mixed el, Object values, [Boolean returnElement] ) : HTMLElement/Ext.Element
insertBefore( Mixed el, Object values, [Boolean returnElement] ) : HTMLElement/Ext.Element
insertFirst( Mixed el, Object values, [Boolean returnElement] ) : HTMLElement/Ext.Element
˜q™ç»„æ–ÒŽ³•提供ç”?value产生的html 代码åQŒåƈæ·ÕdŠ åˆ°dom åšäØ“el的最后一个子节点/下一个兄弟节ç‚?前一个兄弟节ç‚?½W¬ä¸€ä¸ªå­èŠ‚ç‚¹
values解释参见applyTemplate

apply() : void
applyTemplate( Object values ) : String
apply是applyTemplate的简写,如果参数是数字values可以是一个数¾l„,或者一个象 {id: 'myid', cls: 'myclass', name: 'foo', value: 'bar'}˜q™æ ·çš„json对象


compile() : Ext.Template
¾~–译模板,替换掉模板中的\=>\\ ,\r\n|\n==>\\n, '=\',ä¸»è¦æ˜¯äØ“äº†js自己处理方便

overwrite( Mixed el, Object values, [Boolean returnElement] ) :
利用values生成html替换el的内�br />
set( String html, [Boolean compile] ) : Ext.Template
讄¡½®æ¨¡æ¿çš„html,如果compile为真ž®†è°ƒç”¨compileæ–ÒŽ³•

]]>
[转蝲]EXT核心API详解(äº?Array¾c?http://www.aygfsteel.com/super2/archive/2008/10/30/237564.html淘声依旧淘声依旧Thu, 30 Oct 2008 04:14:00 GMThttp://www.aygfsteel.com/super2/archive/2008/10/30/237564.htmlhttp://www.aygfsteel.com/super2/comments/237564.htmlhttp://www.aygfsteel.com/super2/archive/2008/10/30/237564.html#Feedback0http://www.aygfsteel.com/super2/comments/commentRss/237564.htmlhttp://www.aygfsteel.com/super2/services/trackbacks/237564.html indexOf( Object o ) : Number
object是否在数¾l„中,找不到返å›?1;扑ֈ°˜q”回位置
remove( Object o ) : Array
从数¾l„中删除指定的对象object,如果找不到object则数¾l„无变化

Number¾c?br /> constrain( Number min, Number max ) : Number
‹‚€æŸ¥æ•°å€¼æ˜¯å¦ä»‹äºŽmin与max之间, 如果大于max ˜q”回max,如果ž®äºŽmin˜q”回min, 否则˜q”回当前å€?br />
String¾c?br /> escape( String string ) : String
ž®†string中的'å’Œ\替换为\' \\

format( String string, String value1, String value2 ) : String
格式化字½W¦ä¸²,ä¾?
var cls = 'my-class', text = 'Some text';
var s = String.format('<div class="{0}">{1}</div>', cls, text);// ¾l“æžœ <div class="my-class">Some text</div>

leftPad( String string, Number size, [String char] ) : String
以charž®†string补齐为size长度,char默认定义½Iºæ ¼

toggle( String value, String other ) : String
交换å€?如果当前值等于value,则被赋值other,反之½{‰äºŽvalue,ä¾?
sort = sort.toggle('ASC', 'DESC');

trim() : String
去除开头或¾l“尾多余的空æ ?br />

Date¾c?br /> Date.parseDate( String input, String format ) : Date
ž®†å­—½W¦ä¸²string依指定的格式format转换为时é—?其中格式定义详见formatæ–ÒŽ³•
ä¾?dt = Date.parseDate("2006-01-15 3:20:01 PM", "Y-m-d h:i:s A" );


add( String interval, Number value ) : Date
增加旉™—´ŒD?String interval在Data¾cÖM¸­å·²å®šä¹?br /> Date.MILLI = "ms";
Date.SECOND = "s";
Date.MINUTE = "mi";
Date.HOUR = "h";
Date.DAY = "d";
Date.MONTH = "mo";
Date.YEAR = "y";
例var dt2 = new Date('10/1/2006').add(Date.DAY, -5);

between( Date start, Date end ) : Boolean
是否在两个指定的旉™—´ä¹‹é—´

clearTime( Boolean clone ) : Date
清除旉™—´ä¿¡æ¯,如果clone为真,åˆ™å…‹éš†è‡ªå·²åÆˆ˜q”回新Date,本èínçš„å€¼åÆˆä¸æ”¹å?反之则修改自íw«çš„å€?br />
clone() : Date
克隆

format( String format ) : String
格式化时é—?br /> d     两位数的日期                01 è‡?31
D     三字母的星期å?nbsp;               Mon è‡?Sun
j     一位数的日æœ?nbsp;               1 è‡?31
l     完整的星期名                Sunday è‡?Saturday
S     日期的英文顺序刻词尾,两个字符        st, nd, rd or th.
w     一周中的第几天                0 (星期å¤? è‡?6 (星期å…?
z     一òq´ä¸­çš„第几天                0 è‡?364 (é—°å¹´365 )
W     ISO-8601 星期æ•? 周一½Ž—一个星期的开å§?nbsp;   1 è‡?53
F     月的完整英文å?nbsp;               January è‡?December
m     æœ?ä»?前导                01 è‡?12
M     三字母的½Ž€å†™æœˆå?nbsp;               Jan è‡?Dec
n     æœ?nbsp;                   1 è‡?12
t     本月有多ž®‘天                28 è‡?31
L     是否闰年                    1/0
Y     完整的年ä»?nbsp;               ä¾? 1999 æˆ?2003
y     òq´çš„后两ä½?nbsp;               ä¾? 99 æˆ?03
a     上午/下午ž®å†™                am æˆ?pm
A     上午/下午大写                AM æˆ?PM
g     ž®æ—¶/12ž®æ—¶åˆ?nbsp;               1 è‡?12
G     ž®æ—¶/24ž®æ—¶åˆ?nbsp;               0 è‡?23
h     ž®æ—¶/12ž®æ—¶åˆ?nbsp;               01 è‡?12
H     ž®æ—¶/24ž®æ—¶åˆ?nbsp;               00 è‡?23
i     分钟                    00 è‡?59
s     ¿U?nbsp;                   00 è‡?59
u     毫秒                    001 è‡?999
O     时区,与格林威æ²ÀL ‡å‡†æ—¶é—´ä¹‹å·?nbsp;       ä¾? +0200
T     时区½Ž€å†?nbsp;                   ä¾? EST, MDT ...
Z     时区间距                    -43200 è‡?50400
其中Date¾cÕd†…¾|®äº†å‡ ç§æ ¼å¼
Date.patterns = {
    ISO8601Long:"Y-m-d H:i:s",
    ISO8601Short:"Y-m-d",
    ShortDate: "n/j/Y",
    LongDate: "l, F d, Y",
    FullDateTime: "l, F d, Y g:i:s A",
    MonthDay: "F d",
    ShortTime: "g:i A",
    LongTime: "g:i:s A",
    SortableDateTime: "Y-m-d\\TH:i:s",
    UniversalSortableDateTime: "Y-m-d H:i:sO",
    YearMonth: "F, Y"
};
当然ISO8601Longå’ŒISO8601Short˜q˜æ˜¯éžå¸¸æ‹›äh喜欢çš?br /> ä¾?
dt.format(Date.patterns.ISO8601Long);
dt.format('Y-m-d H:i:s');

getDayOfYear() : Number
一òq´ä¸­çš„第几天,ä»?å¼€å§?br />
getDaysInMonth() : Number
本月有多ž®‘天,

getElapsed( [Date date] ) : Number
当前日期对象与date之间相差的毫¿U’æ•°

getFirstDateOfMonth() : Date
本月的第一�br />
getFirstDayOfMonth() : Number
本月½W¬ä¸€å¤©æ˜¯æ˜ŸæœŸå‡?br />
getGMTOffset() : String
时区信息(见格式定义中�O')
getFirstDateOfMonth() : Date
本月最后一�br />
getFirstDayOfMonth() : Number
本月最后一天是星期�br />
getSuffix() : String
日期后导½W?见格式定义中的S)

getTimezone() : String
时区(见T)

getWeekOfYear() : Number
一òq´ä¸­çš„第几周(见W)

isLeapYear() : Boolean
是否闰年


Function¾c?br /> createCallback(/*args...*/) : Function
创徏回叫æ–ÒŽ³•

createDelegate( [Object obj], [Array args], [Boolean/Number appendArgs] ) :
创徏委托
˜q™ä¸¤ä¸ªè®°æ³•除了传参方式不å?看不出有什么差异都是调用method.apply,createCallback可以看作一个简化版的createDelegate
createCallback==>return method.apply(window, args);
createDelegate==>return method.apply(obj || window, callArgs);
前者参数比较简å?直接传过åŽÖMº†,后者的规则比较复杂ç‚?如果appendArgs为真,argsž®†é™„加在参数列表之后,如果是数å€?argsž®†åœ¨å‚数列表的appendargs位置插入,其它情况下原参将不è“v作用
ä¾?
var fn = func1.createDelegate(scope, [arg1,arg2], true)
//fn(a,b,c) === scope.func1(a,b,c,arg1,arg2);
var fn = func1.createDelegate(scope, [arg1,arg2])
//fn(a,b,c) === scope.func1(arg1,arg2);
var fn = func1.createDelegate(scope, [arg1,arg2], 1)
//fn(a,b,c) === scope.func1(a,arg1,arg2,b,c);
var fn = func1.createCallback(arg1, arg2);
//fn() === func1(arg1, arg2)


createCallback : function(/*args...*/)


createInterceptor( Function fcn, [Object scope] ) : Function
创徏é˜ÀL–­æ–ÒŽ³•,如果fcn˜q”回false,原方法将不会被执è¡?br />
createSequence( Function fcn, [Object scope] ) : Function
创徏¾l„合æ–ÒŽ³•,执行原方æ³?fcn

defer( Number millis, [Object obj], [Array args], [Boolean/Number appendArgs] ):Number
定时执行åQŒéš”millis毫秒后执行原æ–ÒŽ³•

淘声依旧 2008-10-30 12:14 发表评论
]]>
[转蝲]EXT核心API详解(ä¸?Ext.Element¾c?http://www.aygfsteel.com/super2/archive/2008/10/30/237565.html淘声依旧淘声依旧Thu, 30 Oct 2008 04:14:00 GMThttp://www.aygfsteel.com/super2/archive/2008/10/30/237565.htmlhttp://www.aygfsteel.com/super2/comments/237565.htmlhttp://www.aygfsteel.com/super2/archive/2008/10/30/237565.html#Feedback0http://www.aygfsteel.com/super2/comments/commentRss/237565.htmlhttp://www.aygfsteel.com/super2/services/trackbacks/237565.html
Element( String/HTMLElement element, [Boolean forceNew] )
由id或DOM节点创徏Element对象

Element.fly( String/HTMLElement el, [String named] ) : Element
ç”±id或DOM节点创徏一个全局å…׃ín的活动元ç´?可由named命名以避免可能的冲突

Element.get( Mixed el ) : Element
由id或DOM节点或已存在的Element得到一个Ext.Element对象

addClass( String/Array className ) : Ext.Element
为元素添加一个或多个css¾cÕd

addClassOnClick( String className ) : Ext.Element
为点å‡ÖMº‹ä»¶æ·»åŠ å’Œ¿U»é™¤css¾c?br />
addClassOnFocus( String className ) : Ext.Element
为得到和失去焦点æ·ÕdŠ å’Œç§»é™¤css¾c?br />
addClassOnOver( String className, [Boolean preventFlicker] ) : Ext.Element
为鼠标移入移å‡ÞZº‹ä»¶æ·»åŠ å’Œ¿U»é™¤css¾c?该方法未实际使用preventFlicker参数)

addKeyListener( Number/Array/Object/String key, Function fn, [Object scope] ) : Ext.KeyMap
为对象添加按键侦å?key由数值或字符串或{key: (number or array), shift: (true/false), ctrl: (true/false), alt: (true/false)}˜q™æ ·çš„对象或他们的数¾l„组æˆ?br />
addKeyMap( Object config ) : Ext.KeyMap
功能同addKeyListener,只是传参方式不同
ä¾?
el.addKeyMap({key : "ab",ctrl : true,fn: fn,scope:el });
å’?br /> el.addKeyListener({key:"ab",ctrl:true},fn,el);
是等ä»ïLš„,都是åœ?按下ctral+a或ctrl+b后呼叫fn

addListener( String eventName, Function fn, [Object scope], [Object options] ) : void
定义事äšg侦听,eventName:事äšgå?fn:事äšg处理æ–ÒŽ³•,scrope:范围,其中options的定义比较复æ?可以包含以下属æ€?br /> scope {Object} : 处理fn的范å›?br /> delegate {String} : 一个简单选择å™?˜q‡æ×o目标或寻扄¡›®æ ‡çš„子孙节点)
stopEvent {Boolean} : é˜ÀL­¢äº‹äšg,½{‰äºŽpreventDefault+stopPropagation
preventDefault {Boolean} : é˜ÀL­¢é»˜è®¤‹zÕdЍ
stopPropagation {Boolean} : é˜ÀL­¢äº‹äšg冒æˆö
normalized {Boolean} :è®¾äØ“flasež®†å…è®¸æµè§ˆå™¨äº‹äšg替代Ext.EventObject
delay {Number} : 延时多少毫秒后发ç”?br /> single {Boolean} : 只运行一‹Æ?br /> buffer {Number} : 在Ext.util.DelayedTask中预定事ä»?br /> 当然,˜q˜å¯èƒ½è‡ªå®šä¹‰å‚数以传入function


alignTo( Mixed element, String position, [Array offsets], [Boolean/Object animate] ) : Ext.Element
ž®†el寚w½åˆ°element,positon,指示寚w½çš„位¾|?可选以下定ä¹?br /> tl     左上è§?默认)
t      上居ä¸?
tr     右上è§?br /> l      左边界的中央
c      居中
r      双™¾¹ç•Œçš„中央
bl     左下è§?br /> b      下居ä¸?br /> br     右下è§?br /> position˜q˜å¯ä»¥ä‹Éç”?¾U¦æŸ¿UÕdŠ¨ä¸èƒ½­‘…出½H—口
offsets 偏移é‡?ä»¥è±¡ç´ äØ“å•ä½
animate 详见animate定义

ä¾?div1.alignTo('div2','c-bl?',[20,0],true);
采用默认动画ž®†div1的最中央寚w½åˆ°div2的左下角,òq¶å³¿U?0个象ç´?且不能超出窗å?br />

anchorTo( Mixed element, String position, [Array offsets], [Boolean/Object animate], [Boolean/Number monitorScroll], Function callback ) : Ext.Element
功能和alignTo¾cÖM¼¼,只是当窗口重定义大小的时候也会引发重寚w½äº‹äšg
monitorScrollå‚æ•°è¯´æ˜Žæ˜¯å¦éœ€è¦ç›‘è§†æ»šåŠ¨æ¡è¡ŒäØ“,如果定义为数值则是定义的延时,单位为毫¿U?默认æ˜?0ms,
callback定义了animate完成后的回叫æ–ÒŽ³•

animate( Object args, [Float duration], [Function onComplete], [String easing], [String animType] ) : Ext.Element
执行动画.
args:目标
duration:æ—‰™—´é—´éš”.默认æ˜?.35
Function:完成后的回叫æ–ÒŽ³•
easing:è¡ŒäØ“æ–ÒŽ³• 默认值是:easeOut,可选值在ext_base中找åˆ?但没有说æ˜?以下内容从yahoo ui中找到的
easeNone:匀é€?br /> easeIn:开始慢且加é€?br /> easeOut:开始快且减é€?br /> easeBoth:开始慢且减é€?br /> easeInStrong:开始慢且加é€?t的四‹Æ¡æ–¹
easeOutStrong:开始快且减é€?t的四‹Æ¡æ–¹
easeBothStrong:开始慢且减é€?t的四‹Æ¡æ–¹
elasticIn:
elasticOut:
elasticBoth:
backIn:
backOut:
backBoth:
bounceIn:
bounceOut:
bounceBoth:
太多,慢慢体会å?br /> animType:定义动画¾cÕdž‹,默认值run 可选å€?color/motion/scroll


appendChild( String/HTMLElement/Array/Element/CompositeElement el ) : Ext.Element
æ·ÕdŠ å­å…ƒç´ el(el™åÕd·²å­˜åœ¨)

appendTo( Mixed el ) : Ext.Element
ž®†å½“前元素添加到el

applyStyles( String/Object/Function styles ) : Ext.Element
应用样式,stylesæ˜?width:100px"˜q™æ ·çš„å­—½W¦ä¸²æˆ–{width:"100px"}˜q™æ ·çš„对è±?function是指˜q”回˜q™æ ·çš„字串和对象的函æ•?˜q™æ˜¯ä¸€ä¸ªæ²¡æœ‰ç”¨çš„æ‰¹½C?因䨓ä»ÖM½•传参的地斚wƒ½å¯ä»¥æ˜¯è¿”回要求类型的function.另见setStyle

autoHeight( [Boolean animate], [Float duration], [Function onComplete], [String easing] ) : Ext.Element
自适应高度,参数都是老相识了,惟一需要注意的是这个方法ä‹É用了setTimeout,高度不会马上变更

blur() : Ext.Element
失去焦点,忽略所有的异常

boxWrap( [String class] ) : Ext.Element
用一个指定样式classçš„divž®†å½“前元素包含è“væ?class默认å€égØ“x-box

center( [Mixed centerIn] ) : void
alignTo的简华版.相当于alignTo(centerIn || document, 'c-c'),当前元素的中心对齐到centerIn元素的中�br />
child( String selector, [Boolean returnDom] ) : HTMLElement/Ext.Element
依selector选择子孙节点,依returnDom不同批示˜q”回html元素˜q˜æ˜¯ext元素,未定义或false时返回Ext.Element

clean( [Boolean forceReclean] ) : void
清除无用的空白文本节ç‚?我喜‹Æ¢è¿™ä¸ªæƒ³æ³?

clearOpacity() : Ext.Element
清除当前元素样式中不通用元素,清除ie中的filter,清除FF中的opacity/-moz-opacity/-khtml-opacity

clearPositioning( [String value] ) : Ext.Element
清除定位,恢复到默认�相当�br /> this.setStyle({"left": value,"right": value,"top": value,"bottom": value,"z-index": "","position" : "static"});

clip() : Ext.Element
裁剪溢出部分,用unclip()恢复

contains( HTMLElement/String el ) : Boolean
当前元素中是否存在el

createChild( Object config, [HTMLElement insertBefore], [Boolean returnDom] ) : Ext.Element
创徏一个新的子节点
config :DomHelper元素对象,如果没有特别指明tag,ž®†ä‹É用div做默认tag,详情参见DomHelper,如果未定义insertBefore,则追åŠ?br />
createProxy( String/Object config, [String/HTMLElement renderTo], [Boolean matchBox] ) : Ext.Element
创徏一个代理元�br /> config:代理元素的类名或DomHelper config对象
renderTo:ž®†è¦¾l˜åˆ¶ä»£ç†å…ƒç´ çš„html element或id
matchBox:是否寚w½

createShim() : Ext.Element
在当前元素之前创å»ÞZ¸€ä¸ªclassname为ext-shimçš„iframe,有什么用?

down( String selector, [Boolean returnDom] ) : HTMLElement/Ext.Element
通过样式选择器selector选择子孙节点

enableDisplayMode( [String display] ) : Ext.Element
setVisibilityMode的简便方�br />
findParent( String selector, [Number/Mixed maxDepth], [Boolean returnEl] ) : HTMLElement
通过½Ž€å•选择器selectorå¯ÀL‰¾¼œ–先节点 ,直到maxDepth(元素maxDepth默认ä¸?0,也可以是指定的DOM 节点),找不到返回null

findParentNode( String selector, [Number/Mixed maxDepth], [Boolean returnEl] ) : HTMLElement
从父元素开始ä‹É用简单选择器selector选择DOM节点

first( [String selector], [Boolean returnDom] ) : Ext.Element/HTMLElement
得到½W¬ä¸€ä¸ªç¬¦åˆselector条äšg的子节点,è·Œ™¿‡æ–‡æœ¬èŠ‚ç‚¹

focus() : Ext.Element
得到焦点

getAlignToXY( Mixed element, String position, [Array offsets] ) : Array
得到当前元素按position规则寚w½åˆ°elementæ—¶çš„XY坐标å€?position/offsets参数参见alignToæ–ÒŽ³•

getAnchorXY( [String anchor], [Object size], [Boolean local] ) : Array
得到当前元素锚点指定的坐标å€?anchor定义参见alignToæ–ÒŽ³•,默认为c

getAttributeNS( String namespace, String name ) : String
得到使用了命名空间namespace的属性name之�

getBorderWidth( String side ) : Number
得到side指定的边框之å’?side可以是t, l, r, b或他们的ä»ÀL„¾l„合,比如getBorderWidth("lr")ž®±æ˜¯å¾—到左边框和双™¾¹æ¡†ä¹‹å’?br />
getBottom( Boolean local ) : Number
得到当前元素的底部纵坐标,元素¾Uµåæ ?元素高度

getBox( [Boolean contentBox], [Boolean local] ) : Object
得到当前元素的box对象:{x,y,width,height}

getCenterXY() : Array
如果当前元素要居中对齐时的横¾Uµåæ ‡å€?½{‰ä­hgetAlignToXY(document, 'c-c')

getColor( String attr, String defaultValue, [String prefix] ) : void
得到当前元素指定attr的颜色å€?如果没指å®?˜q”回defualtValue,比较郁闷的是明明不是voidä¸ÞZ»€ä¹ˆapi中批½Cºæ˜¯ä¸€ä¸ªvoid?应该是个字符ä¸?br />
getComputedHeight() : Number
得到计算˜q‡çš„高度,得到offsetHeight或css中定义的heightå€ég¹‹ä¸€,如果使用了padding/borders,也会计算˜q›åŽ»

getComputedWidth() : Number
见getComputedHeight

getFrameWidth( String sides ) : Number
得到sides定义的border宽度和padding定义的宽度之�side定义见getBorderWidth

getHeight( [Boolean contentHeight] ) : Number
˜q”回元素的offsetHeight

getLeft( Boolean local ) : Number
得到横坐�br />
getMargins( [String sides] ) : Object/Number
如果没有定义sides,则返回一个含有{left,top,width,height}对象,反之˜q”回side指定的宽åº?side定义见getBorderWidth

getOffsetsTo( Mixed element ) : Array
计算从element到当前元素的偏移�br />
getPadding( String side ) : Number
得到由side指定的padding之和

getPositioning() : Object
得到当前元素的位¾|®ä¿¡æ?˜q”回含以下属性的对象{position,left,right,top,bottom,z-index}

getRegion() : Region
得到当前元素的区域信æ?˜q”回含有以下属性的Ext.lib.Region对象{top, left, bottom, right}

getRight( Boolean local ) : Number
双™¾¹ç•Œå€?br />
getScroll() : Object
得到一个批½Cºæ»šåŠ¨æ¡ä½ç½®çš„å¯¹è±¡{left, top}

getSize( [Boolean contentSize] ) : Object
得到宽度和高度组成的对象信息{width,height}

getStyle( String property ) : String
得到指定的样式å€?getStyles½Ž€åŒ–版

getStyles( String style1, String style2, String etc. ) : Object
得到由参数组成的对象
ä¾?el.getStyles('color', 'font-size', 'width')
可能˜q”回 {'color': '#FFFFFF', 'font-size': '13px', 'width': '100px'}

getTop( Boolean local ) : Number
得到™å¶ç‚¹¾Uµå æ ?br />
getUpdater() : Ext.Updater
得到当前元素的Updater对象,参见Ext.Updater¾c?br />
getValue( Boolean asNumber ) : String/Number
得到value属性的�br />
getViewSize() : Object
得到clientHeightå’ŒclientWidth信息¾l™æˆçš„对象{width,height}

getWidth( [Boolean contentWidth] ) : Number
..˜q™æ ·çš„æ–¹æ³•真å¤?br />
getX() : Number
getXY() : Array
getY() : Array
得到™åµé¢åç§»é‡?也就是绝对坐æ ?br />
hasClass( String className ) : Boolean
样式¾c»className 存在于当前元素的dom 节点ä¸?br />
hide( [Boolean/Object animate] ) : Ext.Element
隐藏当前元素

hover( Function overFn, Function outFn, [Object scope] ) : Ext.Element
讄¡½®é¼ æ ‡¿UÕd…¥¿UÕd‡ºäº‹äšg

initDD( String group, Object config, Object overrides ) : Ext.dd.DD
initDDProxy( String group, Object config, Object overrides ) : Ext.dd.DDProxy
initDDTarget( String group, Object config, Object overrides ) : Ext.dd.DDTarget
˜q™ä¸ªè¦æ”¾åˆ?Ext.ddåŽÖM¸“门搞äº?用于拖曳

insertAfter( Mixed el ) : Ext.Element
insertBefore( Mixed el ) : Ext.Element
insertFirst( Mixed/Object el ) : Ext.Element
在DOM中el元素之前之后...插入当前元素

insertHtml( String where, String html, Boolean returnEl )
插入html内容 where 可选beforeBegin, afterBegin, beforeEnd, afterEnd

insertSibling( Mixed/Object/Array el, [String where], [Boolean returnDom] ) :
插入或创建elåšäØ“å½“å‰å…ƒç´ çš„å…„å¼ŸèŠ‚ç‚?where可选before/after,默认为before

is( String selector ) : Boolean
验证当前节点是否匚w…½Ž€å•选择器selector

isBorderBox()
‹¹‹è¯•不同的样式规则以军_®šå½“前元素是否使用一个有è¾ÒŽ¡†çš„ç›’å­?br />
isDisplayed() : Boolean
只要不是指定display属性none都会˜q”回çœ?br />
isMasked() : Boolean
仅有当前元素有maskòq¶ä¸”å¯è§æ—¶äØ“çœ?maskè¯‘äØ“è’™ç‰‡?ž®±æ˜¯æœ‰äº›è¾“入框没得到å€ég¹‹å‰ä¼šæœ‰ä¸€è¡Œæ¨¡¾pŠçš„æç¤ºçš„é‚£¿Uä¸œè¥?br />
isScrollable() : Boolean
可以滚动?

isVisible( [Boolean deep] ) : Boolean
可见?

last( [String selector], [Boolean returnDom] ) : Ext.Element/HTMLElement
见first

load( String/Function url, [String/Object params], [Function callback], [Boolean discardUrl] ) : Ext.Element
直接应用当前updaterçš„updateæ–ÒŽ³•

mask( [String msg], [String msgCls] ) : Element
ä¸ºå½“å‰å¯¹è±¡åˆ›å»ø™’™ç‰?br />
move( String direction, Number distance, [Boolean/Object animate] ) : Ext.Element
相前元素相对于当前位¾|®ç§»åŠ?
direction批示方向可能的值是"l","left" - "r","right" - "t","top","up" - "b","bottom","down".
distance,指示要移动的距离,ä»¥åƒç´ äØ“å•ä½

moveTo( Number x, Number y, [Boolean/Object animate] ) : Ext.Element
¿U°åŠ¨åˆ°æŒ‡å®šçš„ä½ç½®

next( [String selector], [Boolean returnDom] ) : Ext.Element/HTMLElement
下一个符合selector的兄弟节�

on( String eventName, Function fn, [Object scope], [Object options] ) : void
详见addListener

position( [String pos], [Number zIndex], [Number x], [Number y] ) : void
初始化当前元素的位置 pos可选择relative/absolute/fixed

prev( [String selector], [Boolean returnDom] ) : Ext.Element/HTMLElement
前一个符合selector的兄弟节�br />
query( String selector ) : Array
通过样式选择器选择子节�br />
radioClass( String/Array className ) : Ext.Element
æ·ÕdŠ æ ·å¼æˆ–æ ·å¼æ•°¾l„到当前元素åQŒåƈ¿U»é™¤å…„弟节点中的指定样式

relayEvent( String eventName, Object object ) : void
ž®†å½“前元素的eventName事äšg同时转发¾l™object对象

remove() : void
从当前DOM中删除元ç´?òq¶ä»Ž¾~“存中移é™?br />
removeAllListeners() : Ext.Element
¿U»é™¤æ‰€æœ‰çš„侦听è€?

removeClass( String/Array className ) : Ext.Element
¿U»é™¤æ ·å¼¾c?br />
removeListener( String eventName, Function fn ) : Ext.Element
¿U»é™¤äº‹äšgeventNameçš„fn侦听å™?br />
repaint() : Ext.Element
强制‹¹è§ˆå™¨é‡¾l˜å½“前元ç´?br />
replace( Mixed el ) : Ext.Element
用当前元素替换el

replaceClass( String oldClassName, String newClassName ) : Ext.Element
替换样式¾c?br />
replaceWith( Mixed/Object el ) : Ext.Element
用el替换当前元素

scroll( String direction, Number distance, [Boolean/Object animate] ) : Boolean
滚动,scroll会保证元素不会越�direction和distance参数见move

scrollIntoView( [Mixed container], [Boolean hscroll] ) : Ext.Element
滚动到container内的视图

scrollTo( String side, Number value, [Boolean/Object animate] ) : Element
基本与scrollæ–ÒŽ³•相同,但不保证元素不越ç•?br />
select( String selector, [Boolean unique] ) :
与query不同的是,通过样式选择器selector,selectæ–ÒŽ³•会返回一个复合元素对è±?CompositeElement)或CompositeElementLite,

set( Object o, [Boolean useSet] ) : Ext.Element
讄¡½®å±žæ€§ï¼Œä¾?br /> el.set({width:'200px',height:'200px'});

setBottom( String bottom ) : Ext.Element
setLeft( String left ) : Ext.Element
setRight( String right ) : Ext.Element
setTop( String top ) : Ext.Element
setLeftTop( String left, String top ) : Ext.Element
讄¡½®css 对象的属性å€?br />
setBounds( Number x, Number y, Number width, Number height, [Boolean/Object animate] ) : Ext.Element
马上改变当前元素的位¾|®å’Œž®ºå¯¸

setBox( Object box, [Boolean adjust], [Boolean/Object animate] ) : Ext.Element
为当前元素设¾|®ä¸€ä¸ªç›’子box:{x, y, width, height},adjust指示是否马上调整ž®ºå¯¸

setDisplayed( Boolean value ) : Ext.Element
讄¡½®å¯è§æ€?br />
setHeight( Number height, [Boolean/Object animate] ) : Ext.Element
setWidth( Number width, [Boolean/Object animate] ) : Ext.Element
setSize( Number width, Number height, [Boolean/Object animate] ) : Ext.Element
讄¡½®é«˜åº¦å’Œå®½åº?br />
setLocation( Number x, Number y, [Boolean/Object animate] ) : Ext.Element
讄¡½®å½“前元素相对于页面的横纵坐标

setOpacity( Float opacity, [Boolean/Object animate] ) : Ext.Element
讄¡½®é€æ˜Žåº¦ï¼Œopacityä¸?完全不透明,0完全透明

setPositioning( Object posCfg ) : Ext.Element
为当前元素指定位¾|®ä¿¡æ?参数posCfg参见getPositioning说明

setRegion( Ext.lib.Region region, [Boolean/Object animate] ) : Ext.Element
为当前元素指定区域信�region定义 见getRegion

setStyle( String/Object property, [String value] ) : Ext.Element
讄¡½®æ ·å¼

setVisibilityMode( visMode Element.VISIBILITY ) : Ext.Element
指示是ä‹É用Element.VISIBILITY˜q˜æ˜¯Element.DISPLAY属性来定义可见æ€?br />
setVisible( Boolean visible, [Boolean/Object animate] ) : Ext.Element
讄¡½®å¯è§æ€?br />

setX( Number The, [Boolean/Object animate] ) : Ext.Element
setXY( Array pos, [Boolean/Object animate] ) : Ext.Element
setY( Number The, [Boolean/Object animate] ) : Ext.Element
讄¡½®å½“前元素相对于page的位¾|?br />
show( [Boolean/Object animate] ) : Ext.Element
昄¡¤ºå½“前元素

swallowEvent( String eventName, [Boolean preventDefault] ) : Ext.Element
é˜ÀL­¢eventName事äšg冒æˆöåQŒåƈ视preventDefaulté˜ÀL–­é»˜è®¤è¡ŒäØ“

toggle( [Boolean/Object animate] ) : Ext.Element
切换元素的visibility 或display属æ€?依赖于setVisibilityMode讑֮šçš?br />
toggleClass( String className ) : Ext.Element
如果样式名存在于当前元素对应的dom 节点åQŒç§»é™¤ï¼Œåä¹‹åº”用

translatePoints( Number/Array x, Number y ) : Object
˜q”回一个{left,top}¾l“æž„

un( String eventName, Function fn ) : Ext.Element
解除事äšg侦听åQŒå‚è§?nbsp;  removeListener

unclip() : Ext.Element
见clip;

unmask() : void
见mask;

unselectable(): Ext.Element
¼›æ­¢æ–‡æœ¬é€‰æ‹©

up( String selector, [Number/Mixed maxDepth] ) : Ext.Element
通过样式选择器selector选择¼œ–先节点

update( String html, [Boolean loadScripts], Function callback ) : Ext.Element
利用html更新当前节点内容åQŒloadScripts指示html中如果有scriptåQŒæ˜¯å¦éœ€è¦è¿è¡?˜q™æ˜¯ä¸€ä¸ªinnerHTML的一个老老老问题了

wrap( [Object config], [Boolean returnDom] ) : HTMLElement/Element
用另一个元素config包含自己

淘声依旧 2008-10-30 12:14 发表评论
]]>
[转蝲]EXT核心API详解(一)-Ext javascript http://www.aygfsteel.com/super2/archive/2008/10/30/237563.html淘声依旧淘声依旧Thu, 30 Oct 2008 04:13:00 GMThttp://www.aygfsteel.com/super2/archive/2008/10/30/237563.htmlhttp://www.aygfsteel.com/super2/comments/237563.htmlhttp://www.aygfsteel.com/super2/archive/2008/10/30/237563.html#Feedback0http://www.aygfsteel.com/super2/comments/commentRss/237563.htmlhttp://www.aygfsteel.com/super2/services/trackbacks/237563.html addBehaviors( Object obj ) : void
寚w€‰æ‹©çš„å…ƒç´?应用事äšg侦听å™?事äšg名以@附加在结ž®?例如
addBehaviors({
   // id=foo下所有的a标签加入click事äšg
   '#foo a@click' : function(e, t){
       // do something
   },
   // ç”?分隔多个选择å™?br />    '#foo a, #bar span.some-class@mouseover' : function(){
       // do something
   }
});


apply( Object obj, Object config, Object defaults ) : Object
从config拯‚´æ‰€æœ‰çš„属性到obj,如果有defaults参数,也将拯‚´å…¶å±žæ€§åˆ°obj

applyIf( Object obj, Object config ) : Object
从config拯‚´æ‰€æœ‰å±žæ€§è‡³obj(如果obj未定义相应属æ€?

decode(Object obj) : String
¾~–码一个对è±?数组或其它å€égؓ一个json格式字符ä¸?支持对象,数组,日期,字符ä¸?

destroy( Mixed arg1, Mixed (optional), Mixed (optional) ) : void
ž®è¯•åŽÈ§»é™¤æ¯ä¸ªä¼ å…¥çš„对象,包括DOM,事äšg侦听è€?òq¶å‘¼å«ä»–们的destroyæ–ÒŽ³•(如果存在)


each( Array/NodeList/Mixed array, Function fn, Object scope ) : void
利用array中的每个元素˜q­ä»£è°ƒç”¨fn.直到fn˜q”回å?调用格式fn.call(scope || array[i], array[i], i, array);


encode(String json) : Object
ž®†ä¸€ä¸ªjsonæ ¼å¼å­—ç¬¦ä¸²ååºåˆ—åŒ–äØ“å¯¹è±¡

escapeRe( String str ) : String
为字½W¦ä¸²æ­£åˆ™¾~–码ž®?åœ?+?^${}()|[]/\字符前加\

extend( Object subclass, Object superclass, [Object overrides] ) : void
从superclass¾cȝ‘ô承subclass,overrides参数是要重蝲的方法列è¡?详见override

fly( String/HTMLElement el, [String named] ) : Element
得到全局å…׃ín的一个æÕQ动元素el,如果有多个æÕQ动元素可以ä‹É用命名以避免潜在的冲½H?br />
get( Mixed el ) : Element
得到一个Element对象,参数可以是id或DOM节点或已存在的Element对象

getBody() : Element
得到当前文档的body对象

getCmp( String id ) : Component
通过id得到一个Component对象


getDoc() : Element
得到当前文档

getDom( Mixed el ) : HTMLElement
通过id或节ç‚ÒŽˆ–Element对象˜q”回一个DOM节点


id( [Mixed el], [String prefix] ) : String
为对象el生成一个惟一id,如果对象本èín已有id,ž®†ä¸ä¼šè¢«æ”¹å˜(可以使用前导½W¦prefix)


isEmpty( Mixed value, [Boolean allowBlank] ) : Boolean
åˆ¤æ–­å€¼æ˜¯å¦äØ“½I?null, undefined或空字符串将˜q”回çœ?如果allowBlank定义为真,½Iºå­—½W¦ä¸²ž®†ä¸è¢«è§†ä¸ºç©º

namespace( String namespace1, String namespace2, String etc ) : void
创徏一个命名空��br /> Ext.namespace('Company', 'Company.data');
Company.Widget = function() { ... }
Company.data.CustomStore = function(config) { ... }

num( Mixed value, Number defaultValue ) : Number
ž®†valueè½¬äØ“æ•°å€?如果value不是合法的数值类åž?ž®†è¿”回defaultValue,其实defaultValueòq¶ä¸ä¸€å®šè¦æ±‚是数值类åž?只要你愿æ„?br />

onReady( Function fn, Object scope, boolean override ) : void
当文档准备好了之后引发fn,发生在pageçš„onload事äšg之前,òq¶ä¸”囄¡‰‡æ­¤æ—¶éƒ½è¿˜æ²¡æœ‰è½½å…¥,scope定义执有è€?override定义scope是否有默认的选择


override( Object origclass, Object overrides ) : void
利用overrides重写origclass的方��br /> Ext.override(MyClass, {
    newMethod1: function(){
        // etc.
    },
    newMethod2: function(foo){
        // etc.
    }
});

query( String path, [Node root] ) : Array
通过path,在root中选择节点数组,path可以是以下四¿Ué€‰æ‹©å™¨ä¹‹ä¸€
[元素选择器] �
* ä»ÀL„èŠ‚ç‚¹
E 一个E标签元素
E F ¼œ–先节点为Eçš„F节点
E > F æˆ?E/F çˆ¶èŠ‚ç‚¹äØ“Eçš„F节点
E + F å‰ä¸€ä¸ªå…„å¼ŸèŠ‚ç‚¹äØ“Eçš„F节点
E ~ F 前面的兄弟节点中有E的F节点
[属性选择器] �
E[foo] 有foo属性的E节点
E[foo=bar] 有foo属性å€égØ“barçš„E节点
E[foo^=bar] foo属性以bar开始的E节点
E[foo$=bar] foo属性以bar¾l“尾的E节点
E[foo*=bar] foo属性中有bar字符串的E节点
E[foo%=2] foo属性能�整除的E节点
E[foo!=bar] foo属性å€ég¸ä¸ºbarçš„E节点
[伪类选择器] �
E:first-child E节点是父节点中第一个子节点
E:last-child E节点是父节点中最后一个子节点
E:nth-child(n) E是父节点中每n个节�br /> E:nth-child(odd) E是父节点中的奇数节点
E:nth-child(even) E是父节点中的偶数节点
E:only-child E是父节点中惟一的子节点
E:checked checkedå±žæ€§äØ“çœŸçš„èŠ‚ç‚¹
E:first 子孙节点中的½W¬ä¸€ä¸ªE节点
E:last 子孙节点中的最后一个E节点
E:nth(n) 子孙节点中的½W¬n个E节点
E:odd E:nth-child(odd)的简�br /> E:even E:nth-child(even)的简�br /> E:contains(foo) innerHTML属性中含有foo的E节点
E:nodeValue(foo) E节点中包含一个å€égØ“foo的文本节ç‚?br /> E:not(S) 不匹配简单选择器Sçš„E节点
E:has(S) 有能匚w…½Ž€å•选择器S的子节点的E节点
E:next(S) 下一个兄弟节匚w…½Ž€å•选择器Sçš„E节点
E:prev(S) 前一个兄弟节匚w…½Ž€å•选择器Sçš„E节点
type( Mixed object ) : String
判断对象¾cÕdž‹,如果不是下列å€ég¹‹ä¸€ž®†è¿”回false
[样式选择器] �
E{display=none} display属性å€égØ“noneçš„E节点
E{display^=none} display属性å€ég»¥none开始的E节点
E{display$=none} display属性å€ég»¥none¾l“束的E节点
E{display*=none} display属性值含有none子字串的E节点
E{display%=2} displayå±žæ€§å€ÆDƒ½è¢?整除的E节点
E{display!=none} display属性å€ég¸½{‰äºŽnoneçš„E节点


select( String/Array selector, [Boolean unique], [HTMLElement/String root] ) :CompositeElementLite/CompositeElement
在root内通过样式选择器或元素数组selector选择元素或元素列�unique指示是否只选择惟一�br />
urlDecode( String string, [Boolean overwrite] ) : Object
ž®†url格式字符串string解码为json对象,overwrite参数指示是否不重写已存在的对è±?ä¾?br /> Ext.urlDecode("foo=1&bar=2"); //˜q”回 {foo: 1, bar: 2}
Ext.urlDecode("foo=1&bar=2&bar=3&bar=4"); //˜q”回 {foo: 1, bar: 4}.
Ext.urlDecode("foo=1&bar=2&bar=3&bar=4", true); //˜q”回 {foo: 1, bar: [2, 3, 4]}.

urlEncode( Object o ) : String
ž®†json对象¾~–码为url格式字符ä¸?参见urlDecode
   
type( Mixed object ) : String
得到object¾cÕdž‹,å¦‚æžœä¸äØ“ä»¥ä¸‹åˆ—ä‹Då€ég¹‹ä¸€åˆ™è¿”回false

淘声依旧 2008-10-30 12:13 发表评论
]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º ³¤ÐËÏØ| »ù¡ÊÐ| ÏìË®ÏØ| ̨ɽÊÐ| ¸ÓÖÝÊÐ| ½¹×÷ÊÐ| ³çÃ÷ÏØ| ÓñÌïÏØ| ±£¾¸ÏØ| Ûº£ÏØ| Äþ½òÏØ| Âú³ÇÏØ| ÕÐÔ¶ÊÐ| ºº´¨ÊÐ| ÔÆÁúÏØ| ÒÊË®ÏØ| Ï¿½­ÏØ| Ë³Æ½ÏØ| ÂíÁúÏØ| ÐÂÆ½| Õò°ÍÏØ| Ðû¶÷ÏØ| ´ó³ÇÏØ| °²¿µÊÐ| ÀöË®ÊÐ| ƽ¹ÈÇø| ÌìÖùÏØ| Õ´»¯ÏØ| ̨±±ÏØ| ÈýÃÅÏ¿ÊÐ| ÜõÍåÇø| »ù¡ÊÐ| »¨Ô«ÏØ| ÃÖ¶ÉÏØ| Ëþ³ÇÊÐ| ÕýÏâ°×Æì| ÄϾ©ÊÐ| ±õº£ÏØ| º£ÄþÊÐ| Ð˰²ÏØ| ¾°Ì©ÏØ|