微信小程序 有方法解决多点触控事件么

微信小程序 有方法解决多点触控事件么,第1张

微信小程序 触控事件: 微信小程序的"事件"挺有意思。看了说明文档后发现它的功能很全,事件可以向父节点传递,而且打印这个事件的信息很透明,调试起来应该非常方便。 接下来把文档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('用户点击取消')

}

},

    })

},

以上就是关于微信小程序 有方法解决多点触控事件么全部的内容,包括:微信小程序 有方法解决多点触控事件么、小程序怎么获取 多组 单选按钮选中的值、微信小程序开发实战阅读列表不出现怎么回事等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10103008.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存