说明
平台提供了自定义列表功能,我们可以基于这个列表做一些二次开发,比如我们自定义一些组件,在列表中打开,列表的js代码不支持直接 import 代码,因此我们希望能够直接指定组件的地址进行打开,传值,返回。下面就介绍一下如何在列表代码中实现上面提到的需求。
实现方式
openComponent 方法介绍
在平台中的DialogBox 的代码中提供了方法openComponent 来实现这个需求。
/*** 打开自定义组件。** @param config {* component:"组件的URL",* title:"标题",* curVm:this,* widthHeight:['800px','600px'],* data:{user:{name:"ray",address:"gz"}},* }* @param callBack 回调方法 function(action,data){** }*/DialogBox.openComponent = function (config, callBack)
config 说明
| 属性 | 说明 |
|---|---|
| component | 组件的地址 |
| title | 对话框标题 |
| curVm | 打开对话框的VUE实例对象 |
| widthHeight | 指定对话框的高宽,如果不指定那么会全屏打开 |
| data | 往对话框传递的数据 |
callBack 回调函数
当对话框执行关闭函数时,执行的回调方法。
参数说明:
action: 返回的动作
data:对话框返回的数据
实现一个具体的实例
编写一个自定义组件。
代码如下:
<template><div>{{data.user.name}},{{data.user.address}}<a-button @click="returnData()">返回数据</a-button></div></template><script>import {Util} from "jpaas-common-lib"export default {name: "DemoForm",props:["data","layerid","destroy"],methods:{returnData(){var data= {name:"RAY"};Util.closeWindow(this,"ok",data);}}}</script>
这个组件有几个属性是固定的:
| 参数 | 说明 |
|---|---|
| data | 从调用页面传递的数据 |
| layerid | 这个参数是固定的,不要更改 |
| destroy | 这个也是固定的不用更改 |
点击按钮时
可以使用上面代码提供的方法返回数据。
在列表中使用
1.增加一个按钮。

2.在页面JS函数定义 中编写代码
showComponent(){var config={component:"form/DemoForm.vue",curVm:this,title:"这是个测试",data:{user:{name:"ray",address:"广州"}}};this.getDialogBox().openComponent(config,function(action,data){alert(action);console.info(data);});
在自己编写的页面使用
1.编写一个页面
<template><a-button type="primary" @click="showComponent">弹窗</a-button></template><script>import DialogBox from "@/assets/js/DialogBox";export default{data(){return{}},methods:{showComponent: function () {var config = {component: "form/DemoForm.vue",curVm: this,title: "这是个测试",data: {user: {name: "ray", address: "广州"}}};DialogBox.openComponent(config, function (action, data) {alert(action);console.info(data);});}}}</script>
运用上面一样的代码,只需 import dialogbox 即可实现,效果如下
文档更新时间: 2022-03-27 16:09 作者:zyg