Vue组件中的data
Vue组件中的data是独立的,Vue官方不建议各单元互通数据,每个组件有各自的数据对象,类似于Vue示例中的data。
组件中的data对象
组件中的data必须是带有返回值的函数对象
基础示例
<div id="app">
<test></test>
</div>
<script>
Vue.component('test', {
template: '<h1>{{val}}</h1>',
data: () => ({
val: 10
})
})
new Vue({
el: '#app'
})
</script>
关于组件中的数据
1)单组件数据共享
以下每个按钮的点击,改变的是同一个数据模型
<div id="app">
<test></test>
</div>
<script>
Vue.component('test', {
template: `
<div>
<button @click="num+=1">{{num}}</button>
<button @click="num+=1">{{num}}</button>
<button @click="num+=1">{{num}}</button>
</div>
`,
data: () => ({
num: 0
}),
methods: {
fun(){
this.num++;
}
}
})
new Vue({
el: '#app'
})
</script>
2)data数据独立
data对象会为不同组件注册不同的数据,同结构不同的组件可以使用不同的独立数据
<div id="app">
<test></test>
<test></test>
<test></test>
</div>
<script>
Vue.component('test', {
template: `
<div>
<button @click="num+=1">{{num}}</button>
</div>
`,
data: () => ({
num: 0
}),
methods: {
fun(){
this.num++;
}
}
})
new Vue({
el: '#app'
})
</script>
3)公共作用域数据
如果data数据的参数值是域外定义的公共数据,那么所有组件会共享数据
<div id="app">
<test></test>
<test></test>
<test></test>
</div>
<script>
let vals = {
num: 0 //全局作用的公共数据
}
Vue.component('test', {
template: `
<div>
<button @click="num+=1">{{num}}</button>
</div>
`,
data: () => (vals),
methods: {
fun(){
this.num++;
}
}
})
new Vue({
el: '#app'
})
</script>