因此,在 Vue 組件中定義資料的標準方法是使用 data 函式,如下例所示:
data()
{
return {
a:0
}
}
我的問題是,return我可以在其他地方定義資料物件并在data函式中創建它的實體,而不是在 之后定義資料物件嗎?
因此,例如:
Vue 組件內部:
data()
{
return new DataObject();
}
然后在 DataObject.js 中執行:
class DataObject
{
constructor(a)
{
this._a = a;
}
get a()
{
return this._a;
}
set a(a)
{
if (a > 0)
{
this._a = a;
}
else
{
this._a = 0;
}
}
}
這不起作用。我創建了以下解決方法,使我能夠做到這一點:
data()
{
return {
data: new DataObject();
}
}
這按預期作業,但我仍然定義包裝資料物件以便能夠使用資料物件,我必須訪問aasthis.data.a而不是 just this.a。
那么,是否可以按我的方式實作這一點,而無需在data函式內定義資料或包裝資料物件?
所以我希望能夠從data函式中回傳外部資料物件。
uj5u.com熱心網友回復:
可以在 data 屬性之外構造物件。OP 代碼的問題在于DataObject的吸氣劑。vue 將用回應式 get/set 替換那些,洗掉底層變數的知識。
class SomeClass {
constructor() {
this.a = 'A';
this.b = 'B';
this.c = 'C';
}
// get a() will be overwritten
}
window.onload = () => {
new Vue({
el: '#app',
data: function() {
return new SomeClass()
},
})
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<h3>{{a}}</h3>
<h3>{{b}}</h3>
<h3>{{c}}</h3>
</div>
uj5u.com熱心網友回復:
您沒有為您嘗試創建的物件提供名稱
return new DataObject();
嘗試先在代碼中的某處實體化該類,然后將其回傳
let instance = new DataObject();
return instance;
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/473073.html
