🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
我猜原理是 打开页面,fastadmin 会自动渲染input 框 有class 为‘‘selectpage’’ 的类名 我要实现的功能是通过js动态添加多个selectpage选项,需要用到js 克隆。 说到克隆肯定得有个隐藏的初始版(母体)样式,问题是放在form里面还是外面,是不一样的。 1,初始版(母体)样式放在form里面的话,打开页面会被渲染,组件,直接使用克隆 ~~~ var strVar= $("#assign_goods").clone(true);//克隆母体 strVar.show(); $(this).before(strVar); ~~~ 出现问题,克隆出多个selectpage选项,是可以选择的,但是改变的值都会在初始版(母体)里面改变,所有达不到想要的效果 2,初始版(母体)样式放在form外面的话,打开页面则不会被渲染组件,直接使用克隆,你会发现点击没有效果,此时你不要担心,看接下来操作 ~~~ //操作1: var strVar= $("#assign_goods").clone(true);//克隆母体 //操作2: //get_join_goods_list变量是数据动态赋值,我这里需求是不请求接口的,你可以换成url strVar.find('#goods_condition').attr("data-source",JSON.stringify(get_join_goods_list)); strVar.find('#goods_condition').attr("id",id); //改变克隆元素id,因为selectpage每个id都需不一样 strVar.show(); $(this).before(strVar); //操作3(重要步骤): //重新渲染selectpage插件 require(['selectpage'], function () { $("填写改变后的id").selectPage({ eAjaxSuccess: function (data) { data.list = typeof data.rows !== 'undefined' ? data.rows : (typeof data.list !== 'undefined' ? data.list : []); data.totalRow = typeof data.total !== 'undefined' ? data.total : (typeof data.totalRow !== 'undefined' ? data.totalRow : data.list.length); return data; } }); }); ~~~ fastadmin 自己封装的东西,我单独拎出来用。 ![](https://img.kancloud.cn/47/21/47219c98276de120c38a5ac3d3dba6df_1432x726.png) 最后百度到说,直接加下面这这段,我发现没用,原理是,查找first-form下面的子节点selectPage进行加载渲染,会把已存在的再次加载一遍,到时候你监听值改变的话,会触发很多次事件 ~~~ Form.events.selectpage($('#first-form')); //或者 Form.events.selectpage($('form')); ~~~ 解密,我是用方案2