返回信息流```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函数,然后发现控制台里面改没动作...函数里面改变量值也没现象,是方法不对嘛
这是一条镜像帖。来源:北邮人论坛 / java-script / #1725同步于 2017/3/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
JavaScript机器人发帖
Vue小白一个问题
FatBird
2017/3/18镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
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源码写得相当赞,但是,还是但是不适合入门来看
【 在 logsin 的大作中提到: 】
: set里改成alert是什么意思,你想做什么?调试?
: 你没点alert的确定吧....alert是阻塞代码和debugger一样,浏览器实现的,chrome会提示“禁止此页面显示对话框”,就变成非阻塞代码,忽略掉,所以Vue的双向绑定不至于被一个古老的alert打败,调试不要alert,那是上古时代的做法
: 本地随便找个Vue项目,加上alert,没出现你的问题,点完确定,正常重新渲染
: ...................
哦哦,可能我的浏览器之前阻止了弹窗,之后的observe和defineProperty再去详细看吧~谢大神