天天看點

關于layui使用模闆引擎動态渲染元素注意問題

摸索這個模闆引擎碰到的問題,分享一下

本人在實作使用laytpl實作動态渲染菜單,來減少靜态代碼時候碰到了,元素是成功渲染出來,但是折疊動畫效果和點選事件都失效了,然後仔細看了一下官方文檔

官方文檔原話:跟表單元素一樣,很多時候你的頁面元素可能是動态生成的,這時element的相關功能将不會對其有效,你必須手工執行 element.init(type, filter)方法即可。注意:2.1.6 開始,可以用 element.render(type, filter);

意思是我們動态渲染頁面的時候,渲染完後一定要執行element.init()進行重新渲染,這樣動畫效果和事件才能正常運作

以下是我實作layui模闆引擎實作動态菜單源碼

var data = {
        menu: [{
            parentTitle: '權限清單',
            icon: 'layui-icon-auz',
            expand: 'layui-nav-itemed', //是否預設展開
            child: [{
                title: '管理者清單',
                href: "{{route('admin.list')}}"
            }, {
                title: '角色清單',
                href: "{{route('role.index')}}"
            }, {
                title: '權限清單',
                href: ""
            }]
        }]
    };

    var getTpl = menuTpl.innerHTML,
        view = document.getElementById('menu');
    laytpl(getTpl).render(data, function(html) {
        view.innerHTML = html;
    });
        //初始化動态元素,一些動态生成的元素如果不設定初始化,将不會有預設的動态效果
    element.render();