vue是如何实现在v-on指令里,只需使用变量名更改变量,相应的data就会更新的?

vue是如何实现在v-on指令里,只需更改变量名,相应的data就会更新的?

比较好奇。

v-on:click="counter += 1"

按理说,vue应该是用new Function解析吧,可是我使用new Function不知道怎么把我自定义的对象传递进去。

如果我使用参数传递,参数名为我的对象里的数据名称,那么这样的话虽说传递进去了,可是我的getter和setter也没有了。

如果直接bind的话,还需要使用 this.数据名 这种格式才能更改,所以我实在不知道如何做了。

请各位大神不吝赐教!

阅读 1.7k
2 个回答
✓ 已被采纳新手上路,请多包涵

解决了,目前vue使用了with实现的效果。

这个和你在哪里修改数据无关,dom渲染是依赖收集的。
我将 counter 加入监听了,你改动就会 patch 然后渲染。
至于指令里面,那是因为内部将 this 指向了实例。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题