【发布时间】:2018-03-31 07:17:04
【问题描述】:
我正在阅读Vue components,发现他们对为什么 data 需要成为一个函数的解释有些混乱:
根实例
var vm = new Vue({
el: '#example',
data: {
message: 'here data is a property'
}
})
一个组件
var vm = new Vue({
el: '#example',
data: function () {
return {
counter: 0
}
}
})
Vue 文档通过为每个组件分配一个全局计数器变量来解释这种差异,然后他们对每个组件共享相同的数据感到惊讶......而且他们没有解释为什么他们已经在这里使用了一个函数。
var data = { counter: 0 }
Vue.component('simple-counter', {
template: '<div>{{ counter }}</div >',
data: function () {
return data
}
})
当然现在共享数据
<simple-counter></simple-counter>
<simple-counter></simple-counter>
<simple-counter></simple-counter>
当您引用全局对象作为数据源时,组件没有自己的数据也就不足为奇了。对于将数据作为属性的根 Vue 实例也是如此。
var mydata = { counter: 0 }
var vm1 = new Vue({
el: '#example1',
data: mydata
})
var vm2 = new Vue({
el: '#example2',
data: mydata
})
所以我还有一个问题,为什么组件不能有数据属性?
【问题讨论】: