Vue.js 如何将vuex与Konva一起用于onDragEnd选项
我正在将konva与vuex一起使用。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
这是在“~.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)
?