微信小程序> wxml,小程序笔记wxml

wxml,小程序笔记wxml

浏览量:1781 时间: 来源:qiphon3650
数据绑定及渲染
//数据绑定view{{message}}/view//遍历viewwx:for="{{newobj}}"{{item}}{{index}}/view//判断viewwx:if="{{view=='WEBVIEW'}}"WEBVIEW/viewviewwx:elif="{{view=='APP'}}"APP/viewviewwx:else="{{view=='MINA'}}"MINA/view模板
!--wxml--templatename="staffName"viewFirstName:{{firstName}},LastName:{{lastName}}/view/templatetemplateis="staffName"data="{{...staffA}}"/templatetemplateis="staffName"data="{{...staffB}}"/templatetemplateis="staffName"data="{{...staffC}}"/template//page.jsPage({data:{staffA:{firstName:'Hulk',lastName:'Hu'},staffB:{firstName:'Shang',lastName:'You'},staffC:{firstName:'Gideon',lastName:'Lin'}}})事件
事件分为冒泡事件和非冒泡事件:
冒泡事件:当一个组件上的事件被触发后,该事件会向父节点传递。非冒泡事件:当一个组件上的事件被触发后,该事件不会向父节点传递。viewbindtap="add"{{count}}/viewPage({data:{count:1},add:function(e){this.setData({count:this.data.count+1})}})WXML的冒泡事件列表:
类型触发条件最低版本touchstart手指触摸动作开始touchmove手指触摸后移动touchcancel手指触摸动作被打断,如来电提醒,弹窗touchend手指触摸动作结束tap手指触摸后马上离开longpress手指触摸后,超过350ms再离开,如果指定了事件回调函数并触发了这个事件,tap事件将不被触发1.5.0longtap手指触摸后,超过350ms再离开(推荐使用longpress事件代替)transitionend会在WXSStransition或wx.createAnimation动画结束后触发animationstart会在一个WXSSanimation动画开始时触发animationiteration会在一个WXSSanimation一次迭代结束时触发animationend会在一个WXSSanimation动画完成时触发touchforcechange在支持3DTouch的iPhone设备,重按时会触发1.9.90事件绑定和冒泡事件绑定的写法同组件的属性,以key、value的形式。
key以bind或catch开头,然后跟上事件的类型,如bindtap、catchtouchstart。自基础库版本1.5.0起,bind和catch后可以紧跟一个冒号,其含义不变,如bind:tap、、catch:touchstart。value是一个字符串,需要在对应的Page中定义同名的函数。不然当触发事件的时候会报错。bind事件绑定不会阻止冒泡事件向上冒泡,catch事件绑定可以阻止冒泡事件向上冒泡。
实例解析
如在下边这个例子中,点击innerview会先后调用handleTap3和handleTap2(因为tap事件会冒泡到middleview,而middleview阻止了tap事件冒泡,不再向父节点传递),点击middleview会触发handleTap2,点击outerview会触发handleTap1。
viewid="outer"bindtap="handleTap1"outerviewviewid="middle"catchtap="handleTap2"middleviewviewid="inner"bindtap="handleTap3"innerview/view/view/view事件的捕获阶段自基础库版本1.5.0起,触摸类事件支持捕获阶段。捕获阶段位于冒泡阶段之前,且在捕获阶段中,事件到达节点的顺序与冒泡阶段恰好相反。需要在捕获阶段监听事件时,可以采用capture-bind、capture-catch关键字,后者将中断捕获阶段和取消冒泡阶段。
捕获与冒泡的顺序:在下面的代码中,点击innerview会先后调用handleTap2、handleTap4、handleTap3、handleTap1。
viewid="outer"bind:touchstart="handleTap1"capture-bind:touchstart="handleTap2"outerviewviewid="inner"bind:touchstart="handleTap3"capture-bind:touchstart="handleTap4"innerview/view/view如果将上面代码中的第一个capture-bind改为capture-catch,将只触发handleTap2。
viewid="outer"bind:touchstart="handleTap1"capture-catch:touchstart="handleTap2"outerviewviewid="inner"bind:touchstart="handleTap3"capture-bind:touchstart="handleTap4"innerview/view/viewdatasetdata属性的使用
在组件中可以定义数据,这些数据将会通过事件传递给SERVICE。书写方式:以data-开头,多个单词由连字符-链接,不能有大写(大写会自动转成小写)如data-element-type,最终在event.currentTarget.dataset中会将连字符转成驼峰elementType。
示例:viewdata-alpha-beta="1"data-alphaBeta="2"bindtap="bindViewTap"DataSetTest/viewPage({bindViewTap:function(event){event.currentTarget.dataset.alphaBeta===1//-会转为驼峰写法event.currentTarget.dataset.alphabeta===2//大写会转为小写}})引用WXML提供两种文件引用方式import和include。
importimport可以在该文件中使用目标文件定义的template,如:
在item.wxml中定义了一个叫item的template:
!--item.wxml--templatename="item"text{{text}}/text/template在index.wxml中引用了item.wxml,就可以使用item模板:
importsrc="item.wxml"/templateis="item"data="{{text:'forbar'}}"/import的作用域import有作用域的概念,即只会import目标文件中定义的template,而不会import目标文件import的template。如:CimportB,BimportA,在C中可以使用B定义的template,在B中可以使用A定义的template,但是C不能使用A定义的template。
includeinclude可以将目标文件除了外的整个代码引入,相当于是拷贝到include位置,如:
!--index.wxml--includesrc="header.wxml"/viewbody/viewincludesrc="footer.wxml"/!--header.wxml--viewheader/view!--footer.wxml--viewfooter/view

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎