在原生垂直導(dǎo)航的基礎(chǔ)上,添加了異步加載模式和簡(jiǎn)單的事件處理,簡(jiǎn)單易用、異步。
<div id="hxNavbar"></div>二、JS
layui.extend({
hxNav: '../jslibs/layui/extend/hxNav' // 根據(jù)你自己的目錄設(shè)置
}).use(['element','hxNav'],function(){
layui.hxNav({
element: '#hxNavbar', // 必須,指定ID
url: 'system/getMenuNavbar.php', // 請(qǐng)求后臺(tái)數(shù)據(jù)的接口
type: 'post',
shrink: false,
onSelect: function(v) {
console.log(v);
}
});
});
layui.hxNav('select', id );注意:通過(guò)這個(gè)方法選擇節(jié)點(diǎn)時(shí),仍然會(huì)觸發(fā)組件的onSelect事件!
<?php上面例子中,關(guān)于sql語(yǔ)句中的isMenuHasChild,是一個(gè)自己寫(xiě)的mysql函數(shù),原理如下:
$pid = empty($_POST['id'] ) ? null : $_POST['id']; // 前端發(fā)來(lái)的請(qǐng)求,表明了現(xiàn)在要請(qǐng)求哪一個(gè)節(jié)點(diǎn)的孩子,請(qǐng)求根節(jié)點(diǎn)時(shí),這個(gè)參數(shù)為空
$pdo = new MyPDO(); // pdo連接到mysql
$arrParams = array();
if( empty( $pid ))
$whereParent = 'pi IS NULL';
else {
$whereParent = 'pi=:pi';
$arrParams[':pi'] = $pid;
}
$stm = $pdo->prepare("SELECT id,nm AS text,ic AS icon,isMenuHasChild(id) AS hasChildren,hr AS href FROM sy_menu WHERE {$whereParent} ORDER BY st");
$stm->execute($arrParams);
$result = $stm->fetchAll(PDO::FETCH_ASSOC);
echo json_encode( $result, JSON_UNESCAPED_UNICODE );
-- menu表結(jié)構(gòu):
DROP TABLE IF EXISTS `sy_menu`;
CREATE TABLE sy_menu(
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`pi` int(11) DEFAULT NULL COMMENT 'parent id',
`st` int(11) NOT NULL DEFAULT 0 COMMENT 'sort',
`nm` varchar(128) DEFAULT NULL COMMENT 'name',
`ic` varchar(64) DEFAULT NULL COMMENT 'icon',
`hr` varchar(256) DEFAULT NULL COMMENT 'href',
PRIMARY KEY (`id`),
KEY(`hr`),
CONSTRAINT `menu_self_p` FOREIGN KEY (`pi`) REFERENCES sy_menu(`id`) ON UPDATE CASCADE ON DELETE CASCADE
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT 'menus';
-- 自定義的小函數(shù),用來(lái)獲取某個(gè)id是否具有孩子節(jié)點(diǎn)。
DELIMITER ;;
CREATE FUNCTION `isMenuHasChild`( inid INT ) RETURNS int(11)
RETURN ( SELECT count(`id`) FROM `sy_menu` WHERE `pi`=inid );;
DELIMITER ;
該擴(kuò)展組件由第三方用戶主動(dòng)投遞,并由其自身進(jìn)行維護(hù),本站僅做收集。