Parser是EasyUI框架中用于解析渲染諸如TextBox酥宴、LinkButton齿风、Datagrid等等各類組件的基本模塊少孝,也是EasyUI框架運行的必要條件。
parser的屬性黑界、事件和方法都非常簡單。見下表皂林。
Parser屬性表
屬性名稱 | 屬性值類型 | 默認值 | 描述 |
---|---|---|---|
$.parser.auto | 布爾值 | true | 是否自動解析easyui組件 |
Parser方法表
方法名稱 | 參數(shù) | 描述 |
---|---|---|
$.parser.parser | context | 分析制定組件朗鸠,參數(shù)context為目標組件的jQuery對象 |
Parser事件表
事件名稱 | 參數(shù) | 描述 |
---|---|---|
$.parser.onComplete | context | 組件解析完成后觸發(fā)該事件 |
$.parser.auto
屬性指定是否自動解析組件,如果設(shè)為true則表明自動解析础倍,頁面加載完畢后所有easyui組件將被渲染成標準的easyui樣式烛占。如果設(shè)為false,則需要手動進行渲染沟启,easyuui很多組件本身是基于div進行構(gòu)件的忆家,那么渲染前,它僅僅是個div標記德迹,在頁面中沒有特別的顯示芽卿,而渲染完成后則成了我們看到的easyui組件。
$.parser.parse
方法用于手動渲染組件胳搞。當$.parser.auto
屬性設(shè)定為false的時候卸例,就需要調(diào)用$.parser.parse
來手動渲染指定的組件称杨。該方法可以有參數(shù),也可以沒有參數(shù)筷转。沒有參數(shù)時方法將解析頁面中所有的組件姑原。參數(shù)context指定了待解析的組件,并且是一個jQuery對象旦装,如$(“#target”).parent()
页衙。特別需要說明的一點是,假如我們需要解析一個progressbar組件阴绢,那么context參數(shù)應(yīng)該是progressbar組件的父元素店乐,因為$.parser.parse
進行解析時,只解析context參數(shù)對應(yīng)DOM的子孫節(jié)點呻袭,context本身對應(yīng)的DOM節(jié)點并不被解析眨八。
$.parser.onComplete
事件在組件解析完成后觸發(fā)。如果對整個頁面所有組件進行解析左电,是不需要用到參數(shù)context的廉侧;如果對指定組件進行解析,context則是該指定組件的父節(jié)點jQuery對象篓足。這與$.parser.parse
方法中的context對應(yīng)段誊。
<html>
<head>
<link rel="stylesheet" type="text/css"href="easyui/themes/default/easyui.css"/>
<link rel="stylesheet" type="text/css"href="easyui/themes/icon.css" />
<script type="text/javascript"src="easyui/jquery.min.js"></script>
<script type="text/javascript"src="easyui/jquery.easyui.min.js"></script>
<script>
$("#pb").hide(); // 初始時先隱藏進度條
$.parser.auto = false;
$.parser.onComplete = function(context) {
$("#pb").show(); // 渲染完成后顯示進度條
alert("渲染完成");
}
function pareseMe() {
/*
參數(shù)為進度條的父元素jQuery對象
即class為container的div元素
*/
$.parser.parse($("#pb").parent());
}
</script>
</head>
<body>
<div class="container">
<div id="pb" class="easyui-progressbar"></div>
</div>
<button id="btnParser" onclick="pareseMe()">開始渲染</button>
</body>
</html>
上例代碼中,我們先隱藏了id為pb的進度條組件栈拖,隨后設(shè)置為手動解析连舍,等組件解析完成后再顯示進度條。點擊“開始渲染”按鈕后涩哟,即開始解析索赏。此處,解析的是進度條的父元素贴彼,即<div class="container">
潜腻,所以onComplete中的參數(shù)context也是<div class="container">
。
easyui框架的特點是必須等頁面所有的DOM節(jié)點元素都加載完畢之后器仗,再對組件進行渲染融涣。如果一張頁面中含有比較多的easyui組件,將會出現(xiàn)初始時界面混亂青灼,隨后恢復正常的現(xiàn)象暴心,雖然這并非是Bug,但給用戶的印象總歸不好杂拨。示例代碼中我們通過先隱藏組件专普,加載完成后再顯示組件的方式來避免界面混亂(其實本示例代碼只有一個組件,幾乎不會出現(xiàn)界面混亂的現(xiàn)象)弹沽。一般我們在商用系統(tǒng)開發(fā)中檀夹,通過給頁面加上一個遮罩層筋粗,等組件加載完畢后,在onComplete事件中再取消遮罩層來防止出現(xiàn)界面混亂的現(xiàn)象炸渡。