程序员

微信小程序WXS模拟过滤器

2018-11-30  本文已影响0人  童话_xxv

在微信小程序实际开发应用中,后台接口返回数据里面有时会有数据转换,有时候用循环进行转换比较麻烦,这时我就想到了Vue里面的过滤器,可是小程序没有官方过滤器,这时候可以用 WXS来模拟过滤器。
首先来看一下WXS是什么吧。
WXS(WeiXin Script)是小程序的一套脚本语言,结合 WXML,可以构建出页面结构。
1. wxs 不依赖于运行时的基础库版本,可以在所有版本的小程序中运行。
2. wxs 与 javascript 是不同的语言,有自己的语法,并不和 javascript 一致。
3. wxs 的运行环境和其他 javascript 代码是隔离的,wxs 中不能调用其他 javascript 文件中定义的函数,也不能调用小程序提供的API。
4. wxs 函数不能作为组件的事件回调。
5. 由于运行环境的差异,在 iOS 设备上小程序内的 wxs 会比 javascript 代码快 2 ~ 20 倍。在 android 设备上二者运行效率无差异。

一、直接在页面渲染
1.wxml页面中:

<wxs module="m1">
var msg = "hello world";
module.exports.message = msg;
</wxs>
<view> {{m1.message}} </view>

页面输出:
hello world

二、在wxs文件中导出
1.在utils文件夹里面新增一个filter.wxs文件

// 价格格式化  过滤器的使用
function price(num) {
  if (parseFloat(num).toString() == "NaN") {
    return 0.00;
  } else {
    var price = num / 100;
    return price.toFixed(2);
  }
}
module.exports = {
  price: price
}

2.在js的data里面定义list

//data里面
  data: {
    list: [{
        title: '红富士',
        money: 1000
      },
      {
        title: '猕猴桃',
        money: 1234
      },
      {
        title: '红心柚',
        money: 2345
      },
    ]
  },

3.在wxml中引入

//引入filter.wxs
<wxs module="filter" src="../utils/filter.wxs" />
<view class='title'> 水果特价:</view>
<view class='item' wx:for="{{list}}" wx:key="index">
    <text>{{item.title}}:</text>
    <text>{{filter.price(item.money)}} (¥)</text>
</view> 

页面输出:
水果特价:
红富士:10.00 (¥)
猕猴桃:12.34 (¥)
红富士:23.45 (¥)

注意:
1.wxs文件不能被js文件引用,能引用wxs文件;
2.wxs 中不能调用 javascript 中定义的函数或者变量,也不能调用小程序提供的API,他的运行环境和 javascript 是隔离的。
4.wxs目前似乎并不支持ES6(至少let不能使用);
5.只能使用 var 来定义变量,表现形式和 javascript 一样,会有变量提升;
6.不支持使用 new Date(),获取当前日期要用getDate() 。


haha.gif
上一篇下一篇

猜你喜欢

热点阅读