vue.js - 使用 v-model 在 Vue-Electron App 启动时初始化 vuex 存储数据
问题描述
我也在尝试构建我的第一个electron-vue
应用程序。对于我正在使用的状态数据vuex
。
bootstrap-vue
我对一些表单使用双向绑定。在程序开始时,我想将这些表单的值初始化为默认的表单程序逻辑或从配置文件中读取的值。但在这里我正在为我的代码而苦苦挣扎。存储数据已更新(在我的示例中设置为 true),但未选中的 b-form-checkbox 未更新。我只是不明白为什么?
这是我的代码,用于组件:
<template>
<div>
<b-form-checkbox
v-model="saveOriginalImage"
> Save Original Image
</b-form-checkbox>
</div>
</template>
<script>
export default {
data() {
return {
}
},
computed: {
saveOriginalImage: {
get() {
return this.$store.getters.GET_SAVE_ORIGINAL_IMAGE;
},
set(value) {
this.$store.dispatch('setSaveOriginalImage', value);
}
}
}
}
</script>
我的商店.js
const state = {
SaveOriginalImage: false,
}
const getters = {
GET_SAVE_ORIGINAL_IMAGE: state => {
return state.SaveOriginalImage;
},
const mutations = {
SET_SAVE_ORIGINAL_IMAGE (state, payload) {
state.SaveOriginalImage = payload;
},
}
const actions = {
init ({ commit }) {
commit('SET_SAVE_ORIGINAL_IMAGE', true);
},
setSaveOriginalImage ({ commit }, payload) {
console.log("Action: setSaveOriginalImage payload = " + payload)
commit('SET_SAVE_ORIGINAL_IMAGE', payload)
},
}
export default {
state,
getters,
mutations,
actions
}
我正在 index.js 中的 app.on 事件上初始化存储数据
app.on('ready', () => {
store.dispatch('init');
createWindow();
}
解决方案
我找到了使用 setTimeout 的解决方法:
app.on('ready', () => {
setTimeout(() => {
store.dispatch('init');
}, 2500);
createWindow();
}
对我来说,这看起来像是一个时间问题,我已经尝试了browserWindow
事件ready-to-show
和其他一些事件来获得正确的时间来调用我的 store init 函数,但没有任何效果。
推荐阅读
- android - 无法下载flutter_embedding_debug.jar
- excel - 根据另一个给定值的最新日期获取值
- python - TypeError:'x' 是 int() 的无效关键字参数
- c++ - 为什么我不能从同一目录中的另一个文件中#include 我的类?
- python-3.x - ctype.c_long.from_address 为某些输入返回随机值
- python - c 和 s 作为 matplotlib 绘图函数的参数是什么意思?
- apache-spark - 拼花保存期间发生异常 - SparkException:任务不可序列化 - NotSerializableException - 对象不可序列化
- node.js - socket.io 仅在消息从服务器发送到客户端时才慢,而从服务器到客户端发送消息时非常快
- matlab - 在matlab中绘制点云
- android - 固定 div 覆盖绝对值,仅在一台设备中具有更高的 z-index。为什么