收藏
回答

touchmove,touchstart,touchend在自定义组件传参有问题

操作系统 工具版本
Windows 2018.01.08那个版本

在自定义组件里的触摸事件,传参到引用组件的页面那里

<canvas canvas-id="lineCanvas" disable-scroll="true" class="canvas" bindtouchmove="moveHandlerBind" bindtouchstart='touchHandlerBind' bindtouchend='touchEndHandlerBind'></canvas>
methods: {
        touchHandlerBind: function (e) {
            this.triggerEvent('touchHandlerBind', e, { bubbles: true, composed: true });
        },
        moveHandlerBind: function (e) {
            this.triggerEvent('moveHandlerBind', e, { bubbles: true, composed: true });
        },
        touchEndHandlerBind: function (e) {
            this.triggerEvent('touchEndHandlerBind', e, { bubbles: true, composed: true });
        }
}

引用组件的页面

<scroeDetail

bind:moveHandlerBind="moveHandlerBind" moveHandler="{{moveHandler}}"

bind:touchHandlerBind="touchHandlerBind" touchHandler="{{touchHandler}}"

bind:touchEndHandlerBind="touchEndHandlerBind" touchEndHandler="{{touchEndHandler}}"

uid="-1" refresh="{{refresh}}">

</scroeDetail>

moveHandlerBind: function (e) {
        this.setData({
            moveHandler: e.detail,  //在手机上这样写是正常的,但是在电脑上,e就是触摸返回的数据
        })
    },
    touchHandlerBind: function (e) {
        this.setData({
            touchHandler: e.detail,
        })
    },
    touchEndHandlerBind: function (e) {
        this.setData({
            touchEndHandler: e.detail,
        })
    },

电脑上引用组件的页面接到的数据是有问题的,整个e都是触摸的数据

{"type":"touchmove","timeStamp":7001.8150000000005,"target":{"id":"","offsetLeft":0,"offsetTop":0,"dataset":{}},"touches":[{"identifier":0,"x":280,"y":69}],"changedTouches":[{"identifier":0,"x":280,"y":69}]}

手机上就是正常的,接收到的数组在e.detail里面


回答关注问题邀请回答
收藏

4 个回答

  • LastLeaf
    LastLeaf
    2018-01-11

    感谢反馈。应该是之前版本有bug。

    2018-01-11
    有用
    回复
  • LastLeaf
    LastLeaf
    2018-01-10

    开发工具项目设置里基础库版本是多少呢?

    2018-01-10
    有用
    回复
  • 锐
    2018-01-11

    1.9.0没问题

    2018-01-11
    有用
    回复
  • 锐
    2018-01-11

    1.7.4

    2018-01-11
    有用
    回复
登录 后发表内容