如何在 vuex 中查看动态变量上的 属性?
How to watch a property on a dynamic variable in vuex?
我在侧面板组件上有一个输入,当在图表中选择一个节点时有条件地显示该输入。输入对应于节点名称。输入是侧面板组件的一部分。该图在它自己的图组件中。
在 vuex 中,我有一个有两个 getter 的商店:所有图形节点的详细信息列表,以及当前选定节点的另一个 属性(如果用户没有 [=31,则为 null) =]一个)。
该图位于第 3 方库中,需要在 Vue 中更改节点名称时得到通知。由于图表位于页面的一个完全独立的部分和不同的组件中,我正在努力弄清楚如何检测到变化。
简而言之 - 当所选节点可以更改(并且可以为空?)时,您如何在所选节点上监视 属性。如果这需要架构更改,那很好,我想这样做 "right way" 但我不知道正确的方法是什么。
我试过了:
computed: {
selectedItem: {
get: function () {
let options = this.$store.getters.getCurrentWorkItem;
return options;
}
},
onSelectedNameChange: function() {
var selected = this.selectedItem;
if (!selected) return;
var text = selected.name;
debugger;
}
}
在图形组件中,但由于所选项目最初为空,因此它永远不会检测到对名称的更改 属性。
编辑
澄清一下,问题是 getCurrentWorkItem returns 所选节点,如果没有选择,则为 null。因为它发生了变化,所以我无法检测到其名称的后续变化 属性
谢谢。
当 selectedItem
改变时 onSelectedNameChange
不会重新计算。
您可以添加 watcher。
computed: {
selectedItem: {
get: function () {
let options = this.$store.getters.getCurrentWorkItem;
return options;
}
},
},
watch: {
selectedItem: {
immediate: true, // so this runs initially
deep: true, // so it detects changes to properties only
handler(newVal, oldVal) {
console.log('selectedItem changed!', oldVal, '-->', newVal);
var selected = this.selectedItem;
if (!selected) return;
var text = selected.name;
debugger;
}
}
}
我在侧面板组件上有一个输入,当在图表中选择一个节点时有条件地显示该输入。输入对应于节点名称。输入是侧面板组件的一部分。该图在它自己的图组件中。
在 vuex 中,我有一个有两个 getter 的商店:所有图形节点的详细信息列表,以及当前选定节点的另一个 属性(如果用户没有 [=31,则为 null) =]一个)。
该图位于第 3 方库中,需要在 Vue 中更改节点名称时得到通知。由于图表位于页面的一个完全独立的部分和不同的组件中,我正在努力弄清楚如何检测到变化。
简而言之 - 当所选节点可以更改(并且可以为空?)时,您如何在所选节点上监视 属性。如果这需要架构更改,那很好,我想这样做 "right way" 但我不知道正确的方法是什么。
我试过了:
computed: {
selectedItem: {
get: function () {
let options = this.$store.getters.getCurrentWorkItem;
return options;
}
},
onSelectedNameChange: function() {
var selected = this.selectedItem;
if (!selected) return;
var text = selected.name;
debugger;
}
}
在图形组件中,但由于所选项目最初为空,因此它永远不会检测到对名称的更改 属性。
编辑
澄清一下,问题是 getCurrentWorkItem returns 所选节点,如果没有选择,则为 null。因为它发生了变化,所以我无法检测到其名称的后续变化 属性
谢谢。
当 selectedItem
改变时 onSelectedNameChange
不会重新计算。
您可以添加 watcher。
computed: {
selectedItem: {
get: function () {
let options = this.$store.getters.getCurrentWorkItem;
return options;
}
},
},
watch: {
selectedItem: {
immediate: true, // so this runs initially
deep: true, // so it detects changes to properties only
handler(newVal, oldVal) {
console.log('selectedItem changed!', oldVal, '-->', newVal);
var selected = this.selectedItem;
if (!selected) return;
var text = selected.name;
debugger;
}
}
}