java自定义图形组件开发,构建自定义组件

#前言 接上篇,因项目需由H5转到小程序,故需打造自定义对话框。而这块需使用到微信小程序的自定义组件功能。

小程序自定义组件

点击此处,可以查看小程序自定义组件的api。 从自定义组件的样例中,我们了解到,其实自定义组件的页面构成和小程序的正常页面构成是一样的;都有自己的wxml、wxss、js、json。唯一需要注意的是js内容不一样以及json需要声明为组件。

小程序组件文件样例

###dialog.wxml

{{title}}

{{text}}

{{item.title}}

###dialog.wxss

样式省略...

###dialog.json

{

"component": true

}

###dialog.js

Component({

properties: {

btnOpts: {

type: Object,

observer: '_dialog'

}

},

data: {

visible: false,//是否显示

mask: true, //是否显示mask

title: '', //提示标题

text: '', //提示文字

buttons: [],//按钮信息

},

methods: {

btnAction(e) {

let index = e.currentTarget.dataset.index;

let button = this.data.buttons[index];

if (button.eventName !== undefined) {

let detail = { index: index }

this.triggerEvent(button.eventName, detail, {})

}

},

_dialog(btnOpts, oldVal) {

this.setData({

visible: btnOpts.visible,

title: btnOpts.title === undefined ? '' : btnOpts.title,

text: btnOpts.text === undefined ? '' : btnOpts.text,

buttons: btnOpts.buttons === undefined ? [] : btnOpts.buttons,

});

}

}

})

在此处遇到的问题是,小程序data中,不能传入函数;即使传入了,小程序data也会过滤掉。故此处使用了triggerEvent也就是让组件触发页面事件(组件事件说明API)

而我的对话框,可能有一个按钮或者多个按钮,故将按钮定义为数组对象。

最后看看在普通页面中如何调用组件。 ##普通页面中如何调用组件 ###在调用页面的json中引入组件

{

"usingComponents": {

"dialog": "/pages/components/dialog/dialog"

}

}

###在view页面中使用组件标签

提交

###在js中声明使用的属性数据

... ...

data: {

btnOpts: '',

}

... ...

submit(e) {

let btnOpts = {

visible: true,

title: '温馨提示',

text: '恭喜,您抽中了300个宠物蛋~',

buttons: [{

title: '确定',

eventName: 'btnevent',//触发组建自定义事件

handler: () => {

//关闭对话框

let btnOpts = {

visible: false,

};

this.setData({

btnOpts: btnOpts

});

}

}],

}

let triggerEventIndex = e.detail.index;

if (triggerEventIndex === undefined) {

this.setData({

btnOpts: btnOpts

});

} else {

let button = btnOpts.buttons[triggerEventIndex];

if (button && typeof button.handler === "function") {

button.handler();

}

}

},

上面的代码在本页面按钮点击的时候会调用;在组件弹出对话框的按钮点击确认的时候也会调用。

因组件能通过e.detail属性传值,在点击的时候,就能知道点击的是哪个按钮;

故只需要组件回传给我按钮的数组index即可知道需要执行的函数;

解决了在data中不能传入函数以及在本页面代码冗余的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值