如何调度Vue计算属性

我正在尝试分派在计算机中创建的对象。 我无法使用它,因为我是vue.js的新手

我想将对象“ updateObject”调度到vuex存储。 尝试了二传手,但没有用。我想如果可以将“ varia”对象设置为与“ updateObject”相同的对象,那么我可以调度它吗? 希望有人能帮助我。

这是我的代码:

<template>
  <div class="detail">
     <b-row align-v="center"><b-button variant="success" @click="submit()">submit</b-button></b-row>
     // some more code...
  </div>
</template>

<script>
import { mapState } from 'vuex'

export default {
  data () {
    return {
      subID: '',
      res: '',
      showAlert: true,
      varia: null
    }
  },
  computed: {
    ...mapState([
      'FA',
      'Main',
      'Sub',
      'layouttype'
    ]),
    getVariable: function (Sub, layouttype) {
      const subID = this.layouttype.sub_id
      var filterObj = this.Sub.filter(function (e) {
        return e.sub_id === subID
      })
      console.log(filterObj)
      return filterObj
    },
    updateObject: {
      // getterfunction

      get: function () {
        var len = this.getVariable.length
        var res = []
        for (var i = 0; i < len; i++) {
          if (i in this.getVariable) {
            var val = this.getVariable[i].variable
            res.push(val)
          }
        }
        console.log(res)
        var ergebnis = {}

        res.forEach(key => {
          if (this.FA[key]) {
            ergebnis[key] = this.FA[key]
          }
        })

        return ergebnis
      },
      // setterfunction
      set: function (value) {
        this.varia = value
      }
    }
  },
  methods: {
    submit () {
      this.$store.dispatch('sendData', this.ergebnis)
    }
  }
}
</script>

告诉我“ this.ergebnis”未定义

评论
  • yautem
    yautem 回复

    您可以尝试在数据如下的情况下将“ ergebnis”声明为全局变量

    export default {
      data () {
        return {
          subID: '',
          res: '',
          showAlert: true,
          varia: null,
          ergebnis : {}
        }
      },
      computed: {
        ...mapState([
          'FA',
          'Main',
          'Sub',
          'layouttype'
        ]),
        getVariable: function (Sub, layouttype) {
          const subID = this.layouttype.sub_id
          var filterObj = this.Sub.filter(function (e) {
            return e.sub_id === subID
          })
          console.log(filterObj)
          return filterObj
        },
        updateObject: {
          // getterfunction
          get: function () {
            var len = this.getVariable.length
            var res = []
            for (var i = 0; i < len; i++) {
              if (i in this.getVariable) {
                var val = this.getVariable[i].variable
                res.push(val)
              }
            }
            console.log(res)
    
            res.forEach(key => {
              if (this.FA[key]) {
                this.ergebnis[key] = this.FA[key]
              }
            })
    
            return this.ergebnis
          },
          // setterfunction
          set: function (value) {
            this.varia = value
          }
        }
      },
      methods: {
        submit () {
          this.$store.dispatch('sendData', this.ergebnis)
        }
      }
    }
    

    现在可以访问ergebnis