【发布时间】:2020-12-10 20:22:34
【问题描述】:
我正在开发一个 Nativescript-Vue 应用程序,我正在尝试使用 Vuex 从 Timepicker 存储小时和分钟以在其他页面中使用。我尝试使用计算属性来捕获事件,但有没有更好的方法使用 Vue 来实现?
这是我所拥有的:
// In NotifyTimePicker.vue (a custom Time-picking modal)
// Template:
<TimePicker row="2" col="0" colSpan="3" horizontalAlignment="center" :hour="selectedFromHour" :minute="selectedFromMinute" />
//Script
computed: {
selectedFromHour: {
get: function () {
return this.$store.state.notifyFromTimeHour
},
set: function (newValue) {
console.log(`Attempting to Update Store with new From Hour = ${newValue}`)
this.$store.commit('changeNotifyFromTimeHour', newValue)
}
},
selectedFromMinute: {
get: function () {
return this.$store.state.notifyFromTimeMinute
},
set: function (newValue) {
console.log(`Attempting to Update Store with new From Minute = ${newValue}`)
this.$store.commit('changeNotifyFromTimeMinute', newValue)
}
},
},
然后,在我的 Vuex 商店中:
export default new Vuex.Store({
state: {
notifyFromTimeHour: 9,
notifyFromTimeMinute: 30,
},
mutations: {
changeNotifyFromTimeHour (state, hour) {
state.notifyFromTimeHour = hour
},
changeNotifyFromTimeMinute (state, minute) {
state.notifyFromTimeMinute = minute
},
},
actions: {
}
});
似乎商店中的默认值可以很好地拉入组件中,但是当更改选择器中的时间时,计算函数的“设置”部分永远不会触发,我也从未看到我的 console.logs 触发.
我应该收听不同的更改事件吗?文档here 并没有详细说明这一点。
感谢您的帮助!
【问题讨论】:
-
你能链接到
TimePicker文档吗? -
也许您可以尝试另一种方法,而不是使用计算属性,而是在 created() 生命周期方法中从存储中提取数据并将其分配给数据属性,然后添加监视并监视数据属性对于更改,如果更改,则将其提交到 VueX 存储。这会产生相同的行为,并且如果您无法使当前的方法起作用,它将起作用
标签: javascript vue.js nativescript vuex nativescript-vue