vuex commit不承诺存储

时间:2017-02-17 09:23:16

标签: vue.js vuex

我无法让我的承诺在商店工作。

我通过动作调用突变,这似乎工作正常。

export const location = {
  state: {
    x: 0,
    y: 0,
    z: 0,
    extent: [],
    epsg: 'EPSG:3857'
  },
  mutations: {
    setLocation(state, payload) {
      // mutate state
      console.log("Commit");
      state.x = payload.x;
      state.y = payload.y;
      console.dir(state); //this does return the mutated state.
    }
  },
  actions: {
    setLocation(context, payload) {
      console.dir(payload);
      context.commit('setLocation', payload);
    }
  },
  getters: {
    mapLocation(state) {
      return state
    }
  }
}

操作已导入到我的组件中:

methods: {
     ...mapActions(['setLocation']),

然后调用:

var location = {
      x: data[0],
      y: data[1]
    }
    this.setLocation(location);

这一切似乎都有效,但当我查看Vue Developer Tools时,Vuex Base状态保持不变,我有一个活跃的变异(setLocation)。我可以点击“全部提交”。提交有效的突变。

在我的组件中,我在getter mapLocation上使用了一个观察者,当我点击Commit All时,它会触发。

如何强制它提交商店?

由于

1 个答案:

答案 0 :(得分:3)

好的,这实际上是一个非常简单的问题/疏忽。

我没有在我正在观看的计算属性上对DOM进行任何建模,因此它从未更新过。

所以解决方案就是使用v-model =“mapLocation”来确保手表触发。