2016-11-10 80 views
1

我將通過API調用修改我的Vue實例中的很多變量。他們的初始價值並不重要。是否有可能丟棄Vue實例中的數據錯誤?

我希望會有辦法在VM的實例來定義它們,但是,這並不工作:

vm = new Vue({ 
 
    el: "#app", 
 
    data: {} 
 
}); 
 
vm.number = 3
<div id="app"> 
 
    {{ number }} 
 
</div>

如果我通過data: { number: null }替換data: {}代碼運行良好。

我想避免的是有一些這樣的聲明 - 有沒有辦法在實例化時聲明data變量?

+0

引用怎麼樣'數據中的所有數據: {container:{number:null,...}}'?因爲你知道上下文,我相信你可以爲'container'提出一個更好的名字。 – gskema

回答

1

不是。

docs解釋如何反應作品Vue公司如下:

當你傳遞一個普通的JavaScript對象到Vue的實例作爲其數據 選項,Vue公司將走過它的所有屬性,並將其轉換 getter/setter使用Object.defineProperty。

...

吸氣/ setter方法是對用戶不可見,但在引擎蓋下它們 使Vue的執行依賴性跟蹤和改變通知時 屬性被訪問或修改。

...

由於現代的JavaScript(和 Object.observe的遺棄)的侷限性,Vue公司無法檢測屬性添加或刪除。

所以基本上以純而言,爲了使數據值是反應性,因而被更新時,您的API調用返回時,屬性必須是從實例化時存在的,因爲Vue公司無法檢測addions或缺失

也就是說,您可以按照@gskema的建議使用佔位符對象並將您的屬性附加到該對象。這些變化確實會被Vue收回。

所以,你可以這樣做:

data: { 
    api: null 
} 

,然後附上您的API值到api屬性時返回他們,最後只是api.number

+0

謝謝。我使用組件,所以解決方案有一個「容器化」的變量集是我將要做的 - 如果沒有辦法避免聲明變量。你的回答很清楚,這是不可能的。 – WoJ

相關問題