當前位置:編程學習大全網 - 源碼下載 - 如何在thinkphp中使用b-jui

如何在thinkphp中使用b-jui

B-JUI 前端框架

B-JUI(Bootstrap for DWZ)是壹個富客戶端框架,基於DWZ-jUI富客戶端框架修改。

本文是B-JUI中文使用手冊,包括使用示例代碼,感興趣的同學參考下。

概覽

B-JUI僅有壹個主頁面(document),框架內的所有子頁面將通過Ajax獲取後作為壹個頁面片段附加到主頁面上,外部頁面則通過iframe嵌入主頁面, 本節介紹 B-JUI的主頁面結構。

HTML5 文檔類型

同Bootstrap, B-JUI使用 HTML5 文檔類型,參照下面的格式進行設置。

<!DOCTYPE html>

<html lang="zh-CN">

...

</html>

主頁面結構(僅body部分)

主頁面由上(頁頭)、中左(導航菜單)、中右(工作區)、下(頁腳)四部分組成,其中左側導航菜單可收縮。結構如下:

<header class="bjui-header" id="bjui-header">

<!-- 頁頭 -->

</header>

<div class="bjui-leftside" id="bjui-leftside">

<!-- 導航菜單 -->

</div>

<div id="bjui-container">

<!-- 工作區 -->

</div>

<footer class="bjui-footer" id="bjui-footer">

<!-- 頁腳 -->

</footer>

子頁面(即頁面片段[後面簡稱:頁片])結構

頁片通常由兩部分組成,也可以只保留bjui-pageContent部分,其中bjui-pageContent部分可選bjui-headBar(頂部工具條)和bjui-footBar(底部工具條)。結構如下:

<div class="bjui-pageHeader">

<!-- 頂部模塊[如:功能按鈕、搜索面板] -->

</div>

<div class="bjui-pageContent">

<div class="bjui-headBar">

<!-- 頂部工具條 -->

</div>

<div data-layout-h="0">

<!-- 內容區 -->

</div>

<div class="bjui-footBar">

<!-- 底部工具條 -->

</div>

</div>

data-layout-h 屬性表示該容器為頁片自適應布局,當值為0時,B-JUI會為該容器的高度自動賦值為:本頁片總高度減去本頁片中的固定元素(bjui-pageHeader\bjui-headBar\bjui-footBar)高度。

data-layout-h 屬性值不等於0時,該容器高度為本頁片總高度減去屬性值。

需要自定義固定元素(塊級元素有效),請為該元素添加屬性data-layout-fixed="true"

完整的頁片詳見B-JUI源代碼的table.html,僅bjui-pageContent部分的頁片詳見form.html

元素ID命名規範

因為本框架默認所有內容都位於壹個Document中,所以為元素命名ID的時候需要做到唯壹性,如果確實不可避免的會出現有重復ID的現象,需要操作當前頁片的元素時,盡量用:

$.CurrentNavtab.find('#dom-id'),在當前標簽工作區中查找指定ID的元素。

或 $.CurrentDialog.find('#dom-id'),在當前彈窗中查找指定ID的元素。

標簽式工作區(navtab)

B-JUI框架的整個工作區部分就是壹個navtab組件,本組件位於主頁面的"#bjui-container"容器內,固定的html結構如下:

<div id="bjui-navtab" class="tabsPage">

<div class="tabsPageHeader">

<div class="tabsPageHeaderContent">

<ul class="navtab-tab nav nav-tabs">

<li data-tabid="main" class="main active"><a href="javascript:;"><span>我的主頁</span></a></li>

</ul>

</div>

<div class="tabsLeft"><i class="fa fa-angle-double-left"></i></div>

<div class="tabsRight"><i class="fa fa-angle-double-right"></i></div>

<div class="tabsMore"><i class="fa fa-angle-double-down"></i></div>

</div>

<ul class="tabsMoreList">

<li><a href="javascript:;">我的主頁</a></li>

</ul>

<div class="navtab-panel tabsPageContent layoutBox">

各頁片內容區域

</div>

</div>

用法(如何創建壹個navtab):

DOM點擊觸發:

<a href="mytab.html" data-toggle="navtab" data-id="mynavtab" data-title="我的業務頁面">打開navtab</a>

<button type="button" class="btn-green" data-toggle="navtab" data-id="mynavtab" data-url="mytab.html" data-title="我的業務頁面">打開navtab</button>

jQuery:

$(selector).navtab({id:'標簽的id', url:'載入頁片的url', title:'標簽的標題'})

取得當前navtab的內容容器:$.CurrentNavtab

參數:

名稱 類型 默認值 描述 id string navtab 標簽的ID,如果指定重復,將覆蓋現有的ID相同標簽。 title string New tab 標簽打開後顯示的名稱。 url string undefined 請求數據的url。 type string GET Http請求方式,可選‘GET/POST’。 data object {} 請求url時,需要發送的data數據。

方法:

這樣調用navtab的方法:

$(selector).navtab('方法名', 參數1, ..., 參數n)

如要切換到某個標簽:

$(selector).navtab('switchTab', 標簽ID)

方括號的參數,表示該參數可選。

可用的方法:

switchTab(tabid):切換到某個標簽。

refresh(tabid):刷新某個標簽。

reload(options):重新載入某個標簽,options同navtab默認參數,如果未指定ID,則默認重載入當前標簽。

closeTab(tabid):關閉某個標簽。

closeCurrentTab([tabid]):關閉當前標簽。

closeAllTab():關閉所有標簽。

事件:

這樣監聽navtab的事件:

$(document).on('bjui.beforeLoadNavtab', function(e) {

var $navtab = $(e.target)

// do something...

})

名稱 描述 bjui.beforeLoadNavtab 載入標簽內容前的事件 bjui.beforeCloseNavtab 關閉標簽前的事件

彈出窗口(dialog)

彈出窗口分為普通彈出窗口和模態彈出窗口,普通彈出窗口可通過taskBar組件進行最小化等操作。彈出窗口的DOM結構會放入Body中,結構如下:

<div class="bjui-dialog bjui-dialog-container">

<div class="dialogHeader">

<!-- 最大化、最小化、關閉等按鈕區 -->

<h1><!-- 標題 --></h1>

</div>

<div class="dialogContent layoutBox unitBox">

<!-- 頁片內容區 -->

</div>

<!-- 用於調整大小的div片斷 -->

</div>

用法(如何創建壹個dialog):

DOM點擊觸發:

<a href="mydialog.html" data-toggle="dialog" data-id="mydialog" data-title="我的彈出窗口">打開彈出窗口</a>

<button type="button" class="btn-green" data-toggle="dialog" data-id="mynavtab" data-url="mytab.html" data-title="我的彈出窗口">打開彈出窗口</button>

jQuery:

$(selector).dialog({id:'彈窗的id', url:'載入頁片的url', title:'彈窗的標題'})

取得當前dialog:$.CurrentDialog

參數:

名稱 類型 默認值 描述 id string navtab 彈窗的ID,如果指定重復,將覆蓋現有的ID相同彈窗。 title string New tab 彈窗打開後顯示的名稱。 url string undefined 請求數據的url。 type string GET Http請求方式,可選‘GET/POST’。 data object {} 請求url時,需要發送的data數據。 width int 500 彈窗的寬度。 height int 300 彈窗的高度。 max boolean false 打開彈窗時直接最大化。 mask boolean false 是否模態窗口。 resizable boolean true 可以調整彈窗的大小。 drawable boolean true 可以拖動彈窗。 maxable boolean true 是否顯示最大化按鈕。 minable boolean true 是否顯示最小化按鈕(模態彈窗無效)。

方法:

調用方式同navtab: 如要關閉某個彈窗:

$(selector).dialog('close', 彈窗ID)

方括號的參數,表示該參數可選。

可用的方法:

switchDialog(id):切換到某個彈窗(模態彈窗無效)。

refresh(id):刷新某個彈窗。

reload(options):重新載入某個彈窗,options同dialog默認參數,如果未指定ID,則默認重載入當前彈窗。

close(id):關閉某個彈窗。

closeCurrent():關閉當前彈窗。

事件:

這樣監聽dialog的事件:

$(document).on('bjui.beforeLoadDialog', function(e) {

var $dialog = $(e.target)

// do something...

})

名稱 描述 bjui.beforeLoadDialog 載入彈窗內容前的事件 bjui.beforeCloseDialog 關閉彈窗前的事件

Ajax

本節主要介紹B-JUI框架中的Ajax操作,回調函數等。

Ajax操作:

ajax搜索 - 主要用於搜索表單,分頁表單,例:B-JUI源碼"table.html"中的#pagerForm:

<form id="pagerForm" data-toggle="ajaxsearch" action="table.html" method="post">

ajax重置搜索 - 主要用於重置搜索表單,data-clear-query屬性告訴form是否清空查詢參數,僅保留分頁及字段排序信息,例:B-JUI源碼"table.html"中的清空查詢按鈕:

<a class="btn btn-orange" href="javascript:;" data-toggle="reloadsearch" data-clear-query="true" data-icon="undo">清空查詢</a>

ajax載入 - 主要用於為指定容器載入url的內容,data-target屬性值為選擇器表達式,告訴ajax載入的內容放到該容器,適合用來做局部刷新:

<a href="table-edit.html" data-toggle="ajaxload" data-target="#D11">加載內容</a>

ajax動作 - 主要用於執行ajax命令,如“刪除”,data-confirm-msg屬性用於在操作前進行確認提示:

<a href="del.html" class="btn btn-red" data-toggle="doajax" data-confirm-msg="確定要刪除該行信息嗎?">刪除數據</a>

ajax導出 - 主要用於導出信息(下載文件),data-confirm-msg屬性用於在操作前進行確認提示:

<a href="book1.xlsx" data-toggle="doexport" data-confirm-msg="確定要導出信息嗎?">導出全部</a>

ajax導出選中項 - 主要用於導出選中項信息(下載文件),data-confirm-msg屬性用於在操作前進行確認提示,data-idname屬性指定發送到後臺的字段名稱,默認“ids”,data-group屬性用於指定復選框的name:

<a href="book1.xlsx" data-toggle="doexportchecked" data-confirm-msg="確定要導出選中項嗎?" data-idname="expids" data-group="ids">導出選中項</a>

ajax刪除選中項 - 主要用於導出選中項信息(下載文件),data-confirm-msg屬性用於在操作前進行確認提示,data-idname屬性指定發送到後臺的字段名稱,默認“ids”,data-group屬性用於指定復選框的name:

<a href="del.html" data-toggle="dodelchecked" data-confirm-msg="確定要刪除選中項嗎?" data-idname="delids" data-group="ids">導出選中項</a>

Ajax回調:

ajaxsearch、doajax、dodelchecked三種ajax操作支持自定義ajax回調函數,自定義的回調函數放到data-callback屬性,寫法如下:。

<a href="del.html" class="btn btn-red" data-toggle="doajax" data-confirm-msg="確定要刪除該行信息嗎?" data-callback="mycallback">刪除數據</a>

function mycallback(json) {

//do something...

}

服務端返回的JSON參數如下:

名稱 類型 描述 statusCode int 必選。狀態碼(ok = 200, error = 300, timeout = 301),可以在BJUI.init時配置三個參數的默認值。 message string 可選。信息內容。 tabid string 可選。待刷新navtab id,多個id以英文逗號分隔開,當前的navtab id不需要填寫,填寫後可能會導致當前navtab重復刷新。 closeCurrent boolean 可選。是否關閉當前窗口(navtab或dialog)。 forward string 可選。跳轉到某個url。 forwardConfirm string 可選。跳轉url前的確認提示信息。

默認的回調函數會根據當前觸發元素的位置確定是刷新navtab還是dialog,或是局部div容器。

可調用的返回信息提示:

$(selector).bjuiajax('ajaxDone', json)

表格

表格的Class同Bootstrap,僅調整了padding值,使表格顯示得更緊湊。

.table 少量的padding和水平分隔線。

.table-striped 條紋狀表格 [IE8 不支持]。

.table-bordered 帶邊框表格。

.table-hover 附加鼠標懸停效果。

表格表頭字段排序按鈕實現:

<th data-order-field="sex">姓名</th>

<th data-order-direction="asc" data-order-field="createtime">創建時間</th>

data-order-field=""屬性令本字段可排序,屬性值為與後臺交互的字段名稱。

data-order-direction屬性表示本字段的當前排序狀態,可選值(asc/desc)

普通表格

普通的表格,可顯示列表狀條目,或布局表單,表頭字段可附加排序按鈕。

完整的實例詳見B-JUI源代碼的table.html。

固定表頭表格

表格的頭可固定住,可調整各列的寬度,表頭字段可附加排序按鈕。

<table data-toggle="tablefixed" data-width="100%" data-layout-h="0">

表格添加屬性data-toggle="tablefixed"後就會固定表頭,B-JUI默認為固定的表頭的表格添加Class:table table-striped table-bordered table-hover,如果該table設置有Class,則以設置的為準

data-width屬性可定義固定表格的寬度,默認為"100%",可設置大於100%或固定值,如:150%和1200都是合法的,超過navtab工作區的寬度時會出現橫向滾動條。

完整的實例詳見B-JUI源代碼的table-fixed.html。

可編輯表格

用於需要動態添加簡單行內容的地方。

<table class="table table-bordered table-hover table-striped" data-toggle="tabledit" data-initnum="0" data-layout-h="0">

<thead>

<tr>

<th title="No."><input type="text" name="edit[#index#].id" class="no" data-rule="required" value="1" size="2"></th>

<th title="姓名"><input type="text" name="edit[#index#].name" data-rule="required" value="" size="5"></th>

<th title="" data-addtool="true" width="100">

<a href="javascript:;" class="btn btn-red row-del" data-confirm-msg="確定要刪除該行信息嗎?">刪</a>

</th>

</tr>

</thead>

</table>

實現步驟:

表格添加屬性data-toggle="tablefixed";

thead中添加上對應的表單信息,字段名放到title屬性上;

若想在某列上顯示添加按鈕,需在對應列上添加屬性data-addtool="true";

若每行顯示刪除按鈕,需為刪除按鈕添加Classrow-del,如果要確認才能刪除,需為刪除按鈕添加屬性data-confirm-msg="刪除提示信息"。

表格的data-initnum屬性,表示載入本頁片時,初始化的添加行數,值為0時不需寫。

外部觸發添加行事件:

按鈕式:

<button type="button" class="btn-green" data-toggle="tableditadd" data-target="#tabledit1" data-num="1">添加編輯行</button>

data-target屬性設置編輯表格的jQuery選擇器,data-num屬性設置點擊時添加的行數。

jQuery:$(selector).tabledit('add', 編輯表格的jQuery對象, 待添加的行數)

$(selector).tabledit('add', $('#tabledit1'), 2)

完整的實例詳見B-JUI源代碼的table-edit.html。

  • 上一篇:套接字_創建源代碼
  • 下一篇:如何用linux鏡像壹個已安裝的系統?
  • copyright 2024編程學習大全網