【发布时间】:2017-08-06 04:43:27
【问题描述】:
我有一个可以以编程方式更改的计算属性(我正在使用get 和set 方法)。
期望:
如果默认参数更改 (
this.message),计算属性 (computedMessage) 必须更改(默认行为)。如果辅助参数发生变化 (
this.messageProxy),则只有计算属性必须反映辅助参数。
Fiddle A 按预期工作,但 Fiddle B 没有。
错误:默认行为(第 1 点)在辅助参数更改后停止。
小提琴之间的唯一区别是计算属性中的console 语句。
背景:我试图以编程方式设置 computed 属性。 computed 属性设置如下:
computedMessage: {
get () {
let messageProxy = this.messageProxy
this.messageProxy = null
console.log(messageProxy, this.messageProxy, this.message)
return messageProxy || this.message
},
set (val) {
this.messageProxy = val
}
}
这允许我设置computedMessage 的值,例如:
this.computedMessage = 'some string'
如果这些行:
get () {
let messageProxy = this.messageProxy
this.messageProxy = null
return messageProxy || this.message
}
将被替换为:
get () {
return this.messageProxy || this.message
}
然后computedMessage 在设置this.messageProxy 的那一刻无法再访问this.message。
通过将this.messageProxy 设置为null,我确保
computedMessage = this.messageProxy
仅在进行分配时。
【问题讨论】:
-
控制台语句在哪里?
-
你应该在fiddle A
console.log(messageProxy, this.messageProxy, this.message)找到这个 -
好的。将来,请在问题本身中包含所有相关代码。 (见minimal reproducible example)
-
@evolutionxbox 我按照您的建议进行了编辑。
-
我不明白你在做什么......
标签: javascript vue.js vuejs2