在Vue中-this。$ data.foo与this.foo有什么区别?

时间:2019-05-02 17:28:33

标签: vue.js

我很好奇,因为两者似乎都可以使用,并且在Vue文档中找不到答案。您有理由将Vue中的数据称为this.$data.whatever而不是this.whatever吗?

2 个答案:

答案 0 :(得分:2)

带有$前缀的数据是专门为访问vue数据属性而不是用户定义的属性定义的。

例如。

var data = { foo: 'foo' } // user defined data
var inst = new Vue({ data: { foo: 'foo' } }) // data - built-in vue property

data.foo // user defined data
inst.$data.foo // vue property - data

当您位于Vue挂钩中时,只需将this.foo用作例如。内部计算方法。

有关更多详细信息,请参见docs

答案 1 :(得分:1)

$ data属性用于访问组件外部的data属性:

var data = { a: 1 }

// direct instance creation
var vm = new Vue({
  data: data
})
vm.a // => 1
vm.$data === data // => true

// must use function when in Vue.extend()
var Component = Vue.extend({
  data: function () {
    return { a: 1 }
  }
})

来源:https://vuejs.org/v2/api/#data