🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 动态下拉(SelectPage) FastAdmin中的动态下拉列表使用的是优秀强大的`Selectpage`插件,FastAdmin对其进行了二次开发。 ## 常规用法 下面介绍一个基础的动态下拉列表示例,如下 ~~~html <input id="c-name" data-rule="required" data-source="category/selectpage" class="form-control selectpage" name="row[name]" type="text" value=""> ~~~ 其中需要给元素class添加一个`selectpage`,其次需要增加一个`data-source="category/selectpage"`这个属性,`category/selectpage`为我们控制器提交列表的方法 FastAdmin的`Selectpage`列表中`显示字段`默认读取的是`name`字段,如果我们返回的列表中不包含`name`字段,将无法展现下拉列表数据。此时我们需要添加使用`data-field="你要显示的字段"`即可,例如`data-field="title"`。 FastAdmin的`Selectpage`列表中`主键字段`默认读取的是`id`字段,如果我们的主键不是`id`字段,则我们可以添加并使用`data-primary-key="你的主键ID字段"`来修改,例如`data-primary-key="productid"`。 ## 事件监听 如果你需要对`SelectPage`组件值变更以后的事件进行监听,可以直接监听文本框的`change`事件即可,如: ~~~js $(document).on("change", "#c-title", function(){ //后续操作 }); ~~~ 也可使用 ~~~js $("#c-title").data("eSelect", function(){ //后续操作 }); ~~~ > 注意以上代码需要放在元素初始化`Form.api.bindevent`之前。 ### 常用方法 ~~~scss //刷新SelectPage $('#category_id').selectPageRefresh(); //清除SelectPage数据 $('#category_id').selectPageClear(); //设置SelectPage数据 $('#category_id').selectPageData(数据源); //禁用或启用SelectPage $('#category_id').selectPageDisabled(状态); //获取SelectPage的选中的文本 $('#category_id').selectPageText(); ~~~ ``` $('#c-sbinfo_id').data("eSelect", function(){ // 处理事件 $("#c-device_name").val($('#c-sbinfo_id').selectPageText()); }); ``` \public\assets\js\backend\auth\admin.js ``` add: function () { $('#username').on('input', function() { var username = $(this).val(); $('#nickname').val(username); }); Form.api.bindevent($("form[role=form]")); }, edit: function () { $('#username').on('input', function() { var username = $(this).val(); $('#nickname').val(username); }); Form.api.bindevent($("form[role=form]")); } ``` > 注意以上代码必须在SelectPage组件渲染成功后才可以进行操作