- 需求的场景描述(希望解决的问题)
wxs在列表渲染的情况下数据仍是共享的,但也因为数据共享要根据列表项进行单独操作也无能为力了啊,
而且传过来的instance都是复制的,包括获取的元素也是复制的,直接在元素上添加数据无法直接影响源元素
总之就是想要单一操作列表渲染项就会变得复杂起来,虽然可以用callMethod进行逻辑层操作更新数据但感觉就是不好。。。
说了那么多废话举个例子:
比如列表渲染一个通过操作class进行显示隐藏的组件
元素直接通过wxs进行获取并且调用相应的class方法进行控制,
原则上每个组件的显示隐藏都由一个独立的布尔值控制,
但因为各种原因wxs就是没能力为每个列表渲染项产生独立的布尔值进行单独的控制
- 希望提供的能力
所以说什么时候能提供一个对元素设置dataset的方法啊,如果有这个方法进行这类的操作就方便很多了。。
本来想着没设置dataset方法起码可以获取相应的style进行相应的操作但是偏偏就是没有啊
样式的变化依然可以通过 data的渲染来改变的 思路不一样而已
改变dom的粗暴方式 不适用于小程序
为什么要走回jquery的直接修改dom的老路上去?
所有mvvm的核心都是data---> view
这么掺杂着来,随时都是隐患
但官方不是推荐用wxs直接操作样式吗,主要是由于setData存在通信时间和造成阻塞才推荐用wxs的吧
像如果要监听touchmove那种把事件绑定到逻辑层再用setData去更新数据,那过于频繁操作setData问题不是很严重吗,关于官方给的wxs示例直接把事件绑到wxs那直接操作dom的样式
wxs其实说白了主要用于wxml页面里面做一些数据渲染helper
例如做一些时间样式格式化等等等等
拿来操作样式是不可取的、
但是官方给的示例就是操作样式。。。虽然方法屈指可数,他的意思是你们不要把touchmove之类频繁操作setData的方法放到逻辑层,用我的wxs就可以操作样式了
就比如说哪怕通过touchmove动态地去更新视图层的一个dom元素的透明度都不得不频繁得操作setData
还有虽然说这种操作虽然可以通过逻辑层实现,但视图层和逻辑层的通信是要时间的啊。。。可能是我太钻牛角尖了偏偏想消除这种通信时间