wxs文件为什么多执行1次?
发布于 6 年前 作者 ntan 10597 次浏览 来自 问答

一个页面,使用了一个组件:

<!-- 页面 -->

<Item wx:for='{{list}}' item='{{item}}'></Item>

这个组件调用了wxs中的一个方法:

<!-- 组件,item是绑定的prop -->
<view class='{{tool.getClass(item)}}'>
  ...

</view>

<wxs src='tool.wxs' module='tool'></wxs>

wxs用来根据时间返回class:

module.exports.getClass = function(item) {
  console.log(!!item)
 
  var now = getDate().getTime();
  var joinStartDate = getDate(item.joinStartDate).getTime();
  if (now < joinStartDate) {
    return 'state0'

  }


 // ...

 
  return 'state4';
}

如果页面中list长度是7,控制台会输出2组16个消息,每一组第一个都是false:

请问wxs是怎么执行的?为什么每次循环比数据长度多执行一次?为什么每次循环第一次传入的数据都是undefined?

2 回复

因为wxs是底层的语言会比js执行快,所以先判断是否有数据在导出给页面执行。

回到顶部