Vue.js 如何将vuex与Konva一起用于onDragEnd选项

Vue.js 如何将vuex与Konva一起用于onDragEnd选项,vue.js,vuex,konvajs,Vue.js,Vuex,Konvajs,我正在将konva与vuex一起使用。 这是在“~.vue”处定义图像的代码。 “const yo”中有两个选项onDragEnd和onTransform。 这两个选项的“this.msg”和“this.msg2”在方法中定义。 因此,我可以实时使用这两个选项。 /gallery.vue . . created() { const image = new window.Image(); image.src = this.imageUpload.url; image.o

我正在将konva与vuex一起使用。
这是在“~.vue”处定义图像的代码。
“const yo”中有两个选项onDragEnd和onTransform。
这两个选项的“this.msg”和“this.msg2”在方法中定义。
因此,我可以实时使用这两个选项。

/gallery.vue
  .
  .
created() {
  const image = new window.Image();
    image.src = this.imageUpload.url;
    image.onload = () => {
      const yo = {
        image: image,
        name: "yoyo",
        draggable: true,
        scaleX: this.imageUpload.positions.scaleX,
        scaleY: this.imageUpload.positions.scaleY,
        x: this.imageUpload.positions._lastPosX,
        y: this.imageUpload.positions._lastPosY,
        onDragEnd: this.msg,
        onTransform: this.msg2
      };

      this.images.push(yo);
    };
 },

methods: {
    msg(e) {
      this.savePositions(e.target.attrs);
    },
    msg2(e) {
      this.savePositions(e.currentTarget.attrs);
    },
但我想将“created()”中的代码移动到“vuex store”中,以便通过一个文件进行控制。
因此,我在vuex商店中再次制作,如下所示。
当我将此操作调用到“gallery.vue”中时,除了“this.msg”和“this.msg2”这两个选项外,其他所有操作都很正常
我猜想这个问题会发生在“e”参数上。我用各种方法编辑
但这并不起作用;我不能说this.msg和this.msg2不起作用
如何正确调用此函数?
非常感谢你的阅读

/store.js
 .
 .
const actions = {
 bringImage({ commit }) {
    axios
      .get(`http://localhost:4000/work`)
      .then(payload => {
        commit('pushWorks', payload);
      })
      .then(() => {
        const image = new window.Image();
        image.src = state.url;
        image.onload = () => {
          // set image only when it is loaded
          const yo = {
            image: image,
            name: state.title,
            draggable: true,
            scaleX: state.positions.scaleX,
            scaleY: state.positions.scaleY,
            x: state.positions._lastPosX,
            y: state.positions._lastPosY,
            onDragEnd: this.msg,
            onTransform: this.msg2
          };

          state.images.push(yo);
        };
      });
  },
  msg({ commit }, e) {
    commit('savePositions', e.target.attrs);
  },
  msg2({ commit }, e) {
    commit('savePositions', e.currentTarget.attrs);
  }
 }

您的操作中没有此。因此,尝试使用
e
参数作为有效负载来分派您的操作

bringImage({
  commit,
  dispatch
}) {
  axios
    .get(`http://localhost:4000/work`)
    .then(payload => {
      commit('pushWorks', payload)
    })
    .then(() => {
      const image = new window.Image()
      image.src = state.url
      image.onload = () => {
        // set image only when it is loaded
        const yo = {
          image: image,
          name: state.title,
          draggable: true,
          scaleX: state.positions.scaleX,
          scaleY: state.positions.scaleY,
          x: state.positions._lastPosX,
          y: state.positions._lastPosY,
          onDragEnd: e => dispatch('msg', e),
          onTransform: e => dispatch('msg2', e),
        }

        state.images.push(yo)
      }
    })
}

您的意思是在您的操作中使用
this.msg
还是
(e)=>commit('msg',e)