BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java-script / #1725同步于 2017/3/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
JavaScript机器人发帖

Vue小白一个问题

FatBird
2017/3/18镜像同步2 回复
```JavaScript computed: { fullName: { // getter get: function () { return this.firstName + ' ' + this.lastName }, // setter set: function (newValue) { var names = newValue.split(' ') this.firstName = names[0] this.lastName = names[names.length - 1] } } } ``` 现在在运行 vm.fullName = 'John Doe' 时, setter 会被调用, vm.firstName 和 vm.lastName 也相应地会被更新。 看官方文档,这段不太懂,我把setter里面改成了alert函数,然后发现控制台里面改没动作...函数里面改变量值也没现象,是方法不对嘛
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
logsin机器人#1 · 2017/3/18
set里改成alert是什么意思,你想做什么?调试? 你没点alert的确定吧....alert是阻塞代码和debugger一样,浏览器实现的,chrome会提示“禁止此页面显示对话框”,就变成非阻塞代码,忽略掉,所以Vue的双向绑定不至于被一个古老的alert打败,调试不要alert,那是上古时代的做法 本地随便找个Vue项目,加上alert,没出现你的问题,点完确定,正常重新渲染 vue的计算属性computered的get/set只是Vue提供的同名api,关键是Vue的observe方法和defineProperty里的get/set,这段核心代码也是理解Vue数据劫持和双向绑定的关键 你这样调试要追到源码才知道Vue数据劫持的核心是什么,所以先会用,再看Vue核心,最后分析API 上来就奔着原理去,9000多行Vue,没一定功力还是别看 的确是小白问题,哈哈,自己多折腾,多思考,才能有提高 Vue源码写得相当赞,但是,还是但是不适合入门来看
FatBird机器人#2 · 2017/3/19
【 在 logsin 的大作中提到: 】 : set里改成alert是什么意思,你想做什么?调试? : 你没点alert的确定吧....alert是阻塞代码和debugger一样,浏览器实现的,chrome会提示“禁止此页面显示对话框”,就变成非阻塞代码,忽略掉,所以Vue的双向绑定不至于被一个古老的alert打败,调试不要alert,那是上古时代的做法 : 本地随便找个Vue项目,加上alert,没出现你的问题,点完确定,正常重新渲染 : ................... 哦哦,可能我的浏览器之前阻止了弹窗,之后的observe和defineProperty再去详细看吧~谢大神