在上一篇笔记中波波分享了《Layui框架利用dropdown插件实现下拉菜单》,但是在实际开发中我们不仅需要实现菜单,同时也需要传递参数。经过实际分析,dropdown.onfilter()的回调中获取不到当前点击的对象,因此我们必须尝试其他方法。
一、TP-admin集成dropdown插件。
1、下载dropdown插件,放在/static/plus/dropdown目录下。
2、修改“/static/admin/app.js”,在require.config下方增加如下代码:
- 'dropdown': ['../plugs/dropdown/dropdown'],
做好之后,我们在thinkphp的模板页面中就可以通过layui.use()方式引入了。示例代码如下。
- layui.use(['dropdown'],function (){
- const dropdown = layui.dropdown;
- }
二、绑定需要传递的参数。
温馨提示:在上一篇笔记中波波已经贴出了dropdown实现下拉菜单的代码,同时也分享了dropdown官方的演示案例链接,因此下面不再赘述HTML代码部分。
1、把table或form列表数据$list赋值给JS代码中的变量。
有很多人百度搜索如何把thinkphp的变量赋值给JS变量,其实方法很多,比如在html部分写个隐藏的input,把模板变量赋值进去,在document.ready时用JS获取。
在本例中我采用的是直接赋值。在js中声明一个变量,把$list的值变成json字符串进行传递。如下所示。
- let listData = {$list|json_encode=true};
完整JS绑定参数代码如下:
- <script>
- let listData = {$list|json_encode=true};
- layui.use(['dropdown'],function (){
- const dropdown = layui.dropdown;
- for(let i=0;i< listData.length;i++){
- dropdown.onFilter('more'+listData[i].id ,function (event){
- let href = event+'.html?id='+listData[i].id;
- window.location.href = '#'+href;
- })
- }
- })
- </script>