我正在开发一个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: {
}
});
看起来默认值从 Store 中被成功地引入了组件,但是当在 picker 中更改时间时,计算函数的“set”部分从来没有触发,我也看不到我的 console.logs 输出。
我应该监听不同的 change 事件吗?这里的文档并没有详细说明。
谢谢您的帮助!