
微信小程序 触控事件: 微信小程序的"事件"挺有意思。看了说明文档后发现它的功能很全,事件可以向父节点传递,而且打印这个事件的信息很透明,调试起来应该非常方便。 接下来把文档copy过来 原文地址:>
1 在所有单选按钮组外边套一个 form 组件,并且加一个包含属性 formType="submit" 的
button 按钮,每组单选按钮的 name 使用你的 data-index,选择完闭后点击按钮,在
bindsubmit 绑定的方法中可以获取到所有值:
formSubmit(event) {
const values = eventdetailvalue;
const result = Objectkeys(values)sort()map(key => values[key]);
consolelog(result); // 此时的 result 就是一个按顺序(name)排序的
}
2 使用 radio-group 的 bindchange,设置值时用 data-index 确定位置。
小程序提供打开新页面、页面重定向、页面返回、tabBar切换四种改变视图的机制,托管了页面的生命周期,并为应用提供了相应的生命周期事件,方便应用各阶段的业务处理,但页面之间相互跳转并没有相应的事件机制,例如——
1、A页面打开二级页B,B页面做了一些 *** 作,要通知A页面做相应的处理。
2、从B页面携带一些数据,返回到A页面
以上两种小程序场景很常见,归结为页面间如何方便的进行交互,当然我们可以通过页面跳转传参或全局数据对象来达到目的,但是使用上有些束缚(转换参数或维护全局对象),在此elong小程序项目中采用事件机制解决这一问题。我们重写了navigateToAPI,A页面调用该接口进行页面跳转后,方法返回给A页面一个事件对象 event,该对象可以注册自定义事件,目标页面(B页面)可以按照业务需求触发事件响应,同时将相关数据作为参数传递到监听处callback。
A页面
微信小程序加载不出来
B页面
微信小程序加载不出来
API
微信小程序加载不出来
Event
微信小程序加载不出来
打开二级页面效果图——
微信小程序加载不出来
二、前后端同时开发过程中,前端如何方便的mock数据、特殊场景下前端如何方便的调整后端数据
涉及到>
首先确认是否有相应的接口权限,这里主要用到获取素材相关的接口,可以看到对应接口文档,个人号还是有对应权限的。
在新增了永久素材后,开发者可以分类型获取永久素材的列表:
1、获取永久素材的列表,也包含公众号在公众平台官网素材管理模块中新建的图文消息、语音、视频等素材 。
2、临时素材无法通过本接口获取。
3、调用该接口需>
微信小程序自带的API中的页面交互功能,虽然提示功能非常全面,但是所有的交互API中是没有可以自己在提示框中输入文本的功能,那么现在我们来自己做这样的一个提示框(可以带有输入功能),在提示框输入完内容之后,点击确定,可以将文本内容返回,点击取消则可以回到之前的状态。
(在这里,主页面的布局可以根据每个人的想法来布局,这里展示的css之后展示提示框部分的)
1、首先打开微信开发者工具,建立一个代码模板,那么我们这个提示框就是写在这个页面上。
这里我们主页面叫做index
2、在基本页面中写上一个姓名的文本,当前姓名用<text>{{stuName}}</text>表示,然后为一个button按钮,再在js文件中,建立相应的点击事件以及stuName的信息。这样,一个原始页面就写好了。
下面我们开始d出框页面的制作
<view class='toast-box' hidden='{{!ifName}}'>
<view class='toastbg'></view>
<view class='showToast'>
<view class='toast-title'>
<text>修改姓名</text>
</view>
<view class='toast-main'>
<view class='toast-input'>
<input placeholder='请输入姓名' bindinput='setValue' data-name='stuEidtName'></input>
</view>
</view>
<view class='toast-button'>
<view class='button1'>
<button catchtap='cancel'>取消</button>
</view>
<view class='button2'>
<button catchtap='confirm'>确定</button>
</view>
</view>
</view>
</view>
3、我们可以发现,点击按钮后d出输入框,如果点击除取消和确定之外的地方,是不会有反应的。为了做到这个功能,我们用一个绝对位置的渲染层(toastbg),覆盖住整个页面,并且如果你的页面长度没有滚动的话,请输入min—height:100vh,如果页面发生滚动,请把长度控制在height:100%即可看到整个页面都被覆盖。并且这个覆盖的页面要表现为透明,opacity:02,即可
4、bindinput为写文本时所触发的事件,data-name为文本数据所保存的地方,在js中我们可以把这个数据打印出来,会发现我们所输入的文本信息。
以下为css的代码
toast-box {
width: 100%;
height: 100%;
opacity: 1;
position: fixed;
top: 0px;
left: 0px;
}
toastbg {
opacity: 02;
background-color: black;
position: absolute;
width: 100%;
min-height: 100vh;
}
showToast {
position: absolute;
opacity: 1;
width: 70%;
margin-left: 15%;
margin-top: 40%;
}
toast-title {
padding-left: 5%;
background-color: #2196f3;
color: white;
padding-top: 2vh;
padding-bottom: 2vh;
border-top-right-radius: 16rpx;
border-top-left-radius: 16rpx;
}
toast-main {
padding-top: 2vh;
padding-bottom: 2vh;
background-color: white;
text-align: center;
}
toast-input {
margin-left: 5%;
margin-right: 5%;
border: 1px solid #ddd;
padding-left: 2vh;
padding-right: 2vh;
padding-top: 1vh;
padding-bottom: 1vh;
}
toast-button {
display: flex;
}
button1 {
width: 50%;
}
button2 {
width: 50%;
}
button1 button {
width: 100%;
background-color: white;
color: red;
border-radius: 0px;
border-bottom-left-radius: 16rpx;
}
button2 button{
width: 100%;
background-color: white;
color: black;
border-radius: 0px;
border-bottom-right-radius: 16rpx;
}
picker {
padding-top: 1vh;
padding-bottom: 1vh;
}
我们可以根据自己的喜欢,对提示框的样式进行改变
5、编写js代码,我们需要实现以下一些基本功能(点击出现d窗,取消不改变数据值,确定进行判断数据值,若为空则不能改变,否则可以改变,并且主页面上的内容要变为相应改变后的内容)
6、给最外层的d窗附上hidden(如图所示),为这个值初始为false,点击按钮后触发事件,改false为true,这样即可点击出现d窗。
7、为取消按钮附上点击事件,与hidden的部分刚好相反即可。
8、为书写文本绑定事件,上述代码中命名为setValue,这个函数我们传入一个event进去,将其打印,我们可以发现在其的detail中有我们刚刚所书写的内容,我们将这个值,传给js中data一个属性,这里我们命名为edit。
9、为确定绑定事件,用thisdataedit将这个值进行判断,若为空,我们用wxshowToast提示用户信息没有填写完整,并且页面不会改变。若不为空,则我们setData一下我们的stuName为这个edit的值,并且重新把hidden的属性值改为false。
10、返回到初始页面我们就可以看到我们自己做得一个提示框,并且具有修改值的功能
最近用了一下Vant
Weapp组件库,但是由于我是用mpvue写的,所以自然跟小程序引用不一样,比如我最近引用了vant里面的collapse折叠面板,官网文档里面介绍的使用方法是这样的
1在
appjson
或
indexjson
中引入组件
"usingComponents":
{
"van-collapse":
"path/to/vant-weapp/dist/collapse/index",
"van-collapse-item":
"path/to/vant-weapp/dist/collapse-item/index"
}
2通过value控制展开的面板列表,activeNames为数组格式
<van-collapse
value="{{
activeNames
}}">
<van-collapse-item
title="有赞微商城"
name="1">
提供多样店铺模板,快速搭建网上商城
</van-collapse-item>
<van-collapse-item
title="有赞零售"
name="2">
网店吸粉获客、会员分层营销、一机多种收款,告别经营低效和客户流失
</van-collapse-item>
<van-collapse-item
title="有赞美业"
name="3"
disabled>
线上拓客,随时预约,贴心顺手的开单收银
</van-collapse-item>
</van-collapse>
Page({
data:
{
activeNames:
['1']
},
onChange(event)
{
thissetData({
activeNames:
eventdetail
});
}
});
但是在mpvue里面不能直接这样引入
下面是我的代码
<van-collapse
:value="activeNames"
@change="onChange($event)">
<van-collapse-item
title="有赞微商城"
name="1">
提供多样店铺模板,快速搭建网上商城
</van-collapse-item>
<van-collapse-item
title="有赞零售"
name="2">
网店吸粉获客、会员分层营销、一机多种收款,告别经营低效和客户流失
</van-collapse-item>
<van-collapse-item
title="有赞美业"
name="3"
disabled>
线上拓客,随时预约,贴心顺手的开单收银
</van-collapse-item>
</van-collapse>
export
default
{
data
()
{
return
{
activeName:
'1'
}
},
methods:
{
onChange
(event)
{
consolelog(event)
thisactiveName
=
eventmpdetail
}
}
}
得把原生小程序使用方式为改为mpvue
使用方式
首先是数据绑定方式
value="{{activeNames}}"
改为
v-bind:value="activeNames"
//或者
:value="activeNames"
然后是事件监听
在van-collapse组件里加个监听事件
@change="onChange($event)"
mpvue中获取event值也与原生小程序有所不同:
onChange(event){
//
获取表单组件filed的值
consolelog(eventmpdetail)
//
注意加入mp
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:详解如何搭建mpvue框架搭配vant组件库的小程序项目mpvue+vant
app搭建微信小程序的方法步骤
wxml部分
<van-uploader file-list="{{ picture_list }}" preview-full-image="{{false}}" max-size="2048000" max-count="9" multiple="{{true}}" bind:after-read="afterRead" bind:delete="deleteImg" />
js部分
afterRead:function(event) {
const { file } = eventdetail;
// 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式
var obj={}
objpath=file;
thisuploadimg(obj);
},
uploadimg:function(data) {
wxshowLoading({
title:'上传中',
mask:true,
})
var that =this,
i = datai datai :0,
success = datasuccess datasuccess :0,
fail = datafail datafail :0;
let userInfo=wxgetStorageSync('userInfo');
let peopleId=userInfopeopleId;
var picture_list = thatdatapicture_list;
wxuploadFile({
url: baseUrl +'impl/uploadImg',
filePath: datapath[i]path,
name:'file',
formData: {
'type':1,
'peopleId':peopleId,
},
success: (res) => {
wxhideLoading();
success++;
let obj = JSONparse(resdata)data;
if(objhasOwnProperty('url')){
picture_listpush({
url:objurl,
id:objid
});
thatsetData({
picture_list
})
}
},
fail: (err) => {
wxhideLoading();
wxshowToast({
title:'上传失败!',
icon:'none'
})
fail++;
},
complete: () => {
i++;
if (i == datapathlength) {//当传完时,停止调用
}else {//若还没有传完,则继续调用函数
datai = i;
datasuccess = success;
datafail = fail;
thatuploadimg(data);//递归,回调自己
}
}
});
},
deleteImg(e) {
let index=edetailindex;
consolelog(index);
let {picture_list}=thisdata;
let that=this;
wxshowModal({
content:'确定删除?',
success: (res) => {
if (resconfirm) {
picture_listsplice(index,1);
thatsetData({
picture_list
})
consolelog(thatdatapicture_list);
}else if (rescancel) {
consolelog('用户点击取消')
}
},
})
},
以上就是关于微信小程序 有方法解决多点触控事件么全部的内容,包括:微信小程序 有方法解决多点触控事件么、小程序怎么获取 多组 单选按钮选中的值、微信小程序开发实战阅读列表不出现怎么回事等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)