组件中的数据对象未定义

时间:2018-03-21 16:52:02

标签: javascript vuejs2 vue-component

我在vue组件的数据中定义了这样的对象:

export default {
  components: {..}
  data: () => {
    filter: ({
      from: 2017,
      to: 2018
    }
  }),
  computed: mapState({
    fooObjects: (state) => {
      console.log(this.filter) // print undefined
    }
  }),
  ...
}

您能告诉我如何在计算属性中访问我的过滤器对象,为什么过滤器未定义?正如您所见,我已经开始了2年的初始化。感谢。

2 个答案:

答案 0 :(得分:1)

不要在计算机上使用箭头函数,它们绑定到父上下文,这不会像您期望的那样是Vue实例。您还应该从数据方法返回一个对象。这在以下工作



export default {
  components: {..},
  data () {
    return {
      filter: {
        from: 2017,
        to: 2018
      }
    }
  },
  computed: {
    fooObjects: function () {
      return console.log(this.filter)
    }
  }
}




答案 1 :(得分:0)

有几件事。首先,您的括号不会从第4行开始排列。其次,为了访问this.filter,您的数据方法必须返回一个json对象。你有它返回过滤器。

以下代码可让您访问this.filter

export default {
  components: {..}
  data: () => {
    return {
      filter: {
        from: 2017,
        to: 2018
      }
    }
  },
  computed: mapState({
    fooObjects: (state) => {
      console.log(this.filter) // print undefined
    }
  }),
  ...
}