自定义组件中,对象{]里面定义的匿名函数会被置为null,这个是为何

发布于 7 年前作者 lei802370 次浏览最后编辑 7 年前来自 ask
  • 当前 Bug 的表现(可附上截图)

  • 预期表现

  • 复现路径

  • 提供一个最简复现 Demo

很简单的一段代码,这个是data里面的值

lists: { fn: function () { console.log(111) }, data: [{ ltext: "xxx", rtext: "xxxxx" }] }

html

<view class='listBody' bindtap='_listclick' data-val='{{lists.val}}'>
  <view class='listTitle'>
    <view class='listTitle_Content'>{{lists.title}}</view>
    <view class='listTitle_Del' wx:if='{{lists.needDel}}' bindtap='_btnDelClick'>删除</view>
  </view>
  <view wx:for='{{lists.data}}' wx:key='index' class='listContent'>
    <span class='listContent_left' style='color:{{item.lcolor || ""}}'>{{item.ltext}}</span>
    <text class='listContent_right' style='color:{{item.rcolor || ""}}'>{{item.rtext}}</text>
  </view>
  <view class='listButtom' wx:if='{{lists.btns && lists.btns.length!=0}}'>
    <view class='listButtom_Child' wx:for='{{lists.btns}}' data-index='{{index}}' data-val='{{item.val}}' bindtap='_btnsClick'>{{item.text}}</view>
  </view>
 
  <slot></slot>
</view>

等一会,调试的时候,在_listclick里面控制台打印 this.data 你会发现list里面的其他数据都在

但是 fn 就没了。这个是为啥?????????


不管是放在属性里面或者data都不行,主的page调用setData设置自定义控件的属性内容,也是null


这里说的null是我调试之后看到null,但是你打印出来的时候是没有这个fn的这个东西了


但是page里面就没问题。

1 回复
qiang49
qiang491 楼5 年前

麻烦提供能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html