• Welcome to Journal web site.

我是 PHP 程序员

- 开发无止境 -

Next
Prev

微信小程序 WXS常用方法

Data: 2016-03-28 03:31:24Form: JournalClick: 12

微信小程序框架分为逻辑层和视图层,而wxs就是运行在视图层的,只能通过wxml节点来触发方法,能做的事件一般是比较少的,所以,掌握了wxs常用的方法就是掌握了wxs

 06ac61de2a72861d840236be4a03071a_792361-20190724181253251-275799778.png

selectComponent(selector对象)

描述:通过样式规则返回组件的 ComponentDescriptor 实例。

实例:

wxml:

<wxs module="mr" >
   
   module.exports={
     sc:function(e,ins){
        var nihao=ins.selectComponent('.nihao');
        console.log(JSON.stringify(nihao));
     }
   }
</wxs> 
<view>


<button bindtap="{{mr.sc}}">搜索节点</button>
<view style="padding:20rpx;" class="nihao" data-ok="找到了">
  <rich-text nodes="<h1>这杯酒喝下,停止所有牵挂!"></rich-text>
</view>
</view>
 

效果:

462bbc31d29a235048e25044c203e99e_792361-20190725141203248-2134806036.png

setStyle(Object/string)

描述:设置组件样式,支持rpx。设置的样式优先级比组件 wxml 里面定义的样式高。不能设置最顶层页面的样式。

实例:

上面例子加上这一行

 

nihao.setStyle({
     color:"red"
})

 

 效果:

f6662b508cd667789adc2e658747c042_792361-20190724182821711-1513517509.png

  

addClass(string)

描述:为匹配的组件加上“select”类。

实例:

ins.selectComponent('.selectN').addClass('blue')

效果:

e5b8fa2aa0f166bc431773f734297f22_792361-20190725143431688-825962818.png

 

 

removeClass(string)

描述:为匹配的组件移除“select”类。

实例:

ins.selectComponent('.selectN').removeClass('blue')

 

hasClass(string)

描述:为匹配的组件判断是否有该“select”类。返回boolean值

实例:

ins.selectComponent('.selectN').hasClass('blue')

getDataset()

描述:返回当前或匹配组件/页面的 dataset 对象

实例:

console.log(JSON.stringify(ins.selectComponent('.nihao').getDataset()));

console.log(JSON.stringify(e.instance.getDataset()));

 

 效果:

955cb274638d3bdb86e41c9e938b0e11_792361-20190725151123635-482950329.png

 

callMethod(fn:string, args:object)

描述:调用当前或匹配组件/页面在逻辑层定义的函数。fn表示函数名称,args表示函数的参数。

实例:

wxs

 callfn:function(e,ins){
  ins.callMethod("callJS",{content:"来自wxs的问候"})
  } 
 

js

callJS:function(obj){
  wx.showModal({
     title:"通讯提示",
     content:obj.content,
     showCancel:false
  })
}
 

效果:

3db9f48d38e09e0defdab9fe48f4dc04_792361-20190725152817864-1780351964.png

 

getState()

描述:返回一个object对象,当有局部变量需要存储起来后续使用的时候用这个方法。

实例:


addstate:function(e,ins){     
       var gs=ins.selectComponent('.gs').getState();       if(!gs.count){
         gs.count=0;
       }
       gs.count++;
     },
     getstate:function(e,ins){
        console.log(JSON.stringify(ins.selectComponent('.gs').getState()));
     }

 

 效果:

f27e2dd972daa99249ab6bc19f3a3ac5_792361-20190725154801978-264499481.png

 

triggerEvent(eventName, detail)

描述:自定义组件触发事件时,需要使用 triggerEvent 方法,指定事件名、detail对象和事件选项:

所有实例的源码:

wxml

<wxs module="mr" >
   module.exports={
     sc:function(e,ins){
        var nihao=ins.selectComponent('.nihao');
        console.log(JSON.stringify(nihao));
        nihao.setStyle({
          color:"red"
        })
        
     },
     sclass:function(e,ins){
        ins.selectComponent('.selectN').addClass('blue')
     },
     dclass:function(e,ins){
        ins.selectComponent('.selectN').removeClass('blue')
     },
     pclass:function(e,ins){
        console.log(ins.selectComponent('.selectN').hasClass('blue'))
     },
     sdata:function(e,ins){
        console.log(JSON.stringify(ins.selectComponent('.nihao').getDataset()));

        console.log(JSON.stringify(e.instance.getDataset()));
     },
     callfn:function(e,ins){
        ins.callMethod("callJS",{content:"来自wxs的问候"})
     },
     addstate:function(e,ins){
     
       var gs=ins.selectComponent('.gs').getState();
       if(!gs.count){
         gs.count=0;
       }
       gs.count++;
     },
     getstate:function(e,ins){
        console.log(JSON.stringify(ins.selectComponent('.gs').getState()));
     },
     tcfn:function(new,old,e,ins){
        console.log("new",JSON.stringify(new));
        console.log("old",JSON.stringify(old));
        console.log("e",JSON.stringify(e));
        console.log("ins",JSON.stringify(ins));
     }
   }
</wxs> 
<view>
<button bindtap="appfn">triggerEvent</button>
<button bindtap="{{mr.addstate}}">增加state</button>
<button bindtap="{{mr.getstate}}" class="gs">getState</button>
<button bindtap="{{mr.callfn}}">wxs与page的联系</button>
<button bindtap="{{mr.sdata}}" data-name="murenziwei" data-age="23">查看当前dataset属性</button>
<button bindtap="{{mr.sclass}}">设置样式blue</button>
<button bindtap="{{mr.dclass}}">移除样式blue</button>
<button bindtap="{{mr.pclass}}">判断样式blue</button>
<button bindtap="{{mr.sc}}">搜索节点</button>
<view style="padding:20rpx;" class="nihao" data-ok="找到了">
  <rich-text change:nodes="{{mr.tcfn}}" nodes="{{node}}" class="selectN" data-name="liwei"></rich-text>
</view>
</view>

 

wxss

/* pages/test/test.wxss */
.blue{
  color:blue;
}

 

js

Page({
  ...{    //trigger    appfn:function(){      this.setData({node:`<h1 style="color:red">这么多年到底混的好不好?</h1>`})
    },
    callJS:function(obj){
      wx.showModal({
        title:"通讯提示",
        content:obj.content,
        showCancel:false
      })
    }
  },  /**
   * 页面的初始数据   */
  data: {
    node:`<h1>这杯酒喝下,停止所有牵挂!</h1>`
  }
})

 

效果:

d686f8fdc77294717c7ad634197a2259_792361-20190725161042298-1859575617.png

 

 

小程序文档有相关wxs的示例,可以下载来学学=>实例链接

 

Name:
<提交>