3 回答

TA貢獻(xiàn)1836條經(jīng)驗 獲得超3個贊
Vue 實例的數(shù)據(jù)對象。Vue.js 會遞歸地將它全部屬性轉(zhuǎn)為 getter/setter,從而讓它能響應(yīng)數(shù)據(jù)變化。這個對象必須是普通對象:原生對象,getter/setter 及原型屬性會被忽略。不推薦觀察復(fù)雜對象。
在實例創(chuàng)建之后,可以用 vm.$data 訪問原始數(shù)據(jù)對象。Vue 實例也代理了數(shù)據(jù)對象所有的屬性。
在定義組件時,同一定義將創(chuàng)建多個實例,此時 data 必須是一個函數(shù),返回原始數(shù)據(jù)對象。如果 data 仍然是一個普通對象,則所有的實例將指向同一個對象!換成函數(shù)后,每當(dāng)創(chuàng)建一個實例時,會調(diào)用這個函數(shù),返回一個新的原始數(shù)據(jù)對象的副本。
以上內(nèi)容均來自官網(wǎng),說得很清楚啊。
文件寫成.vue的文件就是組件的寫法,因此這時data必須是一個函數(shù),而你貼的var vm = new Vue({})是直接跑在瀏覽器環(huán)境下的用法,這時data可以是一個普通對象,也可以寫成一個返回普通對象的函數(shù),不過沒必要。

TA貢獻(xiàn)1880條經(jīng)驗 獲得超4個贊
在一個普通的 Vue app 中,data 是一個對象: new Vue( { data : { title : 'abc' } } ); 在 Vue 的 Component 中,data 要寫成一個 function,并返回對象: Vue.component( 'component-name'

TA貢獻(xiàn)1850條經(jīng)驗 獲得超11個贊
在一個普通的 Vue app 中,data 是一個對象:
1 2 3 4 5 6 7 8 9 | new Vue( {
data : {
title : 'abc'
}
} ); |
在 Vue 的 Component 中,data 要寫成一個 function,并返回對象:
1 2 3 4 5 6 7 8 9 10 11 12 13 | Vue.component( 'component-name', Vue.extend( {
data : function() {
return {
title : 'abc'
};
}
} ) ); |
添加回答
舉報