从handsontable访问vue示例

jjjwad0x  于 2022-11-17  发布在  Vue.js
关注(0)|答案(3)|浏览(161)

我正在尝试从handsontable中设置一个vuejs变量。
vuejs变量:

this.dataChanged

在下面的代码块中,无法从handsontable设置中获得,知道如何才能访问它吗?

<template>
<div id="hot-container">
<HotTable :root="root" :settings="hotSettings"></HotTable>
</div>
</template>

<script>
export default {

data() {

return {
  #vuejs variable i want to set from hot
  dataChanged: false,
  root: 'test-hot',
  hotSettings: {
    data: [{something: 0}],
    afterChange: function(changes, src) {
      if (src !== 'loadData') {
        this.dataChanged = true
      }
},
methods: {
  saveChanges: function () {
    if (this.dataChanged){
      //save data
    }
  }
}
hpcdzsge

hpcdzsge1#

我也遇到了同样的问题...我在GitHub上找到了一个解决办法。
通过这种方式,您可以像往常一样访问所有Vue的数据、方法等。

data() {
   return {
     hotSettings: {
       ...
       afterChange: this.afterChangeVue
       ...
     }
   }
},
methods: {
    afterChangeVue(changes, source) {
      console.log('changes, source => ', changes, source);
      console.log('this.$store => ', this.$store);
    },

下面是原始线程的链接:https://github.com/handsontable/vue-handsontable-official/issues/7#issuecomment-356190395

cbeh67ev

cbeh67ev2#

我最终保存到了在vue外部声明的变量中-即data()声明上方

var myNewVar = 42
data() {
    #can save to myNewVar from here
zi8p0yeb

zi8p0yeb3#

就像@Rosdi_Kasim说的那样,但使用胖箭头功能要简单得多

data() {
   return {
     hotSettings: {
       /*...*/
       afterChange: (changes, source) => {
         console.log('changes, source => ', changes, source);
         console.log('this.$store => ', this.$store);
       }
       /*...*/
     }
   }
},
methods: {
}

相关问题