首页 > 编程知识 正文

妄想山海,wxsl什么意思网络流行语

时间:2023-05-06 12:49:36 阅读:230500 作者:2164

wxs WXS(WeiXin Script)是小程序的一套脚本语言,结合 WXML,可以构建出页面的结构个人理解:就是减少与逻辑层的通信,在wxml页面上调用wxs 暴露出来的方法来完成界面的交互。

下面是实现一个div触摸移动的实例:

movable.wxs:var startX = 0var startY = 0var lastLeft = lastTop = 50function touchstart(event, ins) { //console.log(JSON.stringify( ins)) var touch = event.touches[0] || event.changedTouches[0] console.log(touch, touch.pageX, touch.pageY) startX = touch.pageX startY = touch.pageY ins.callMethod('testCallmethod', { //wxs促发逻辑层(index.js)的方法 complete: function(res) { console.log('args', res) } }) function jsons(a){ return JSON.stringify(a) } console.log(jsons(ins.selectAllComponents()),JSON.stringify(ins.selectComponent('.movable').getDataset()),JSON.stringify(ins.selectComponent('.movable').getState()) )}function touchmove(event, ins) { var touch = event.touches[0] || event.changedTouches[0] var pageX = touch.pageX var pageY = touch.pageY var left = pageX - startX + lastLeft var top = pageY - startY + lastTop startX = pageX startY = pageY lastLeft = left lastTop = top // console.log('idff', pageX - context.startX, left, top) ins.selectComponent('.movable').setStyle({ left: left + 'px', top: top + 'px' }) // console.log('get data', JSON.stringify(ins.selectComponent('.movable')[0].getData())) // console.log('get data set', JSON.stringify(ins.selectComponent('.movable')[0].getDataset())) // console.log('test select', ins.selectComponent('.movable')[0].selectComponent('.dd'))}module.exports = { touchstart: touchstart, touchmove: touchmove,} index.wxml<wxs module="test" src="./movable.wxs"></wxs> //将wxs引入<view wx:if="{{show}}" class="area" style='position:relative;width:100%;height:100%;'> <view data-index="1" data-obj="{{dataObj}}" bindtouchstart="{{test.touchstart}}" bindtouchmove="{{test.touchmove}}" bindtouchend='{{test.touchmove}}' class="movable" style="position:absolute;width:100px;height:100px;background:red;left:{{left}}px;top:{{top}}px"></view> </view> /*1.当发生触摸事件的时候,会依次执行index.wxs里面的方法(touchstart,touchmove)*/ index.js:Page({ data: { left: 50, top: 50, taptest: 'taptest', show: true, dataObj: { obj: 1 } }, taptest() { this.setData({ show: false, }) }, testCallmethod(){ //被wxs促发的方法 console.log('022') }}) wxs调用逻辑层js的方法 是通过ComponentDescriptor 实例调用callMethod方法来实现,例如: 在text.wxs中有一个函数a:function a(event, ins) { ins.callMethod('testCallmethod', { //wxs促发逻辑层js中的方法 complete: function(res) { console.log(111) } })在逻辑层js中的testCallmethod方法会被执行:testCallmethod(){console.log(22222)} 逻辑层js调用wxs中的方法, 是通过WxsPropObserver来实现的,例如: wxml:<wxs module="test" src="./test.wxs"></wxs> //将wxs引入<input type="text" change:value='{{test.a}}' value="{{value}}" bindblur="blur"/>/*上面的change:value(属性前面带change:前缀)是在 value属性被设置setData的时候触发 WXS 函数,值必须用{{}}括起来。*/js: blur(e){ //改变value属性的值,当value值改变之后,wxml会触发test.wxs中的a()方法 this.setData({ value:e.detail.value})}wxs:function a(){console.log('wxml调用wxs的a()')}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。