键值组件

键值组件是FastAdmin开发的一项简洁实用的基础组件,在FastAdmin中很多模块都有使用到该组件,例如常规管理->系统配置->字典配置均使用此组件开发,我们在插件管理配置中也经常可以看到键值组件的身影。

以下是键值组件最常用的使用方法:

  1. <dl class="fieldlist" data-name="row[configgroup]">
  2. <dd>
  3. <ins>键名</ins>
  4. <ins>键值</ins>
  5. </dd>
  6. <dd>
  7. <a href="javascript:;" class="btn btn-sm btn-success btn-append"><i class="fa fa-plus"></i> 追加</a>
  8. </dd>
  9. <textarea name="row[configgroup]" class="form-control hide" cols="30" rows="5">{"basic":"基础配置","email":"邮件配置","dictionary":"字典配置","user":"会员配置","example":"示例分组"}</textarea>
  10. </dl>

通过将以上代码放置在我们的表单中,然后使用Form.api.bindevent("form")Form.events.fieldlist("form")进行初始化即可。

以上是最简洁的使用方法,fieldlist还有更强大的自定义功能,如下:

  1. <dl class="fieldlist" data-name="row[test]" data-template="testtpl">
  2. <dd>
  3. <ins>姓名</ins>
  4. <ins>性别</ins>
  5. <ins>年龄</ins>
  6. <ins>成绩</ins>
  7. </dd>
  8. <dd>
  9. <a href="javascript:;" class="btn btn-sm btn-success btn-append"><i class="fa fa-plus"></i> 追加</a>
  10. </dd>
  11. <textarea name="row[test]" class="form-control hide" cols="30" rows="5">[{"name":"张三"},{"gender":"男"},{"age":"23"},{"score":"80"}]</textarea>
  12. </dl>
  13. <!--定义模板-->
  14. <script type="text/javascript" id="testtpl">
  15. <dd class="form-inline">
  16. <input type="text" name="row[<%=name%>][<%=index%>][name]" class="form-control" value="<%=row['name']%>" size="10">
  17. <input type="text" name="row[<%=name%>][<%=index%>][gender]" class="form-control" value="<%=row['gender']%>" size="30">
  18. <input type="text" name="row[<%=name%>][<%=index%>][age]" class="form-control" value="<%=row['age']%>" size="30">
  19. <input type="text" name="row[<%=name%>][<%=index%>][score]" class="form-control" value="<%=row['score']%>" size="30">
  20. <span class="btn btn-sm btn-danger btn-remove"><i class="fa fa-times"></i></span> <span class="btn btn-sm btn-primary btn-dragsort"><i class="fa fa-arrows"></i></span>
  21. </dd>
  22. </script>

通过以上定义,可以任意自定义我们展示项的数据。

如果我们需要在点击追加按钮以后再对新增的展示项绑定事件,我们可以在JS中通过监听事件来给新增的元素绑定事件

  1. $(document).on("fa.event.appendfieldlist", 'data-name="row[test]"', function(){ Form.api.bindevent(this);});