2017-05-27 22 views
1
  1. 在本演示中,(https://jsfiddle.net/ccforward/fa35a2cc/)渲染我無法呈現模板和數據resultWrong等於{}模板不能被對象在vue.js

  2. 在本演示中,(https://jsfiddle.net/ccforward/zoo6xzck/),如果我使用臨時變量保存異步數據,然後我可以得到結果並呈現模板如果在方法中添加另一個名爲getRightData()的函數,則getWrongData()可以工作,並且可以呈現模板。 鏈接:https://jsfiddle.net/ccforward/7f42owpc/4/

  3. 如果我刪除getRightData()方法,那麼getWrongData()不能工作。 鏈接:https://jsfiddle.net/ccforward/7f42owpc/3/

+0

https://vuejs.org/v2/guide/reactivity.html#Change-Detection-Caveats – Bert

回答

1

Vue的cannot detect properties that are added dynamically,除非你使用set添加它們的對象。

這是您的第一個fiddle updated,使用this.$set將屬性正確添加到空對象。

對於您的演示,第一個不起作用,因爲您使用索引添加屬性,而Vue不知道它需要更新DOM。

第二個演示的工作原理是基值resultRight設置爲完全不同的值。 resultRight是一個被動的值,當它改變爲一個不同的值時,Vue知道它需要更新DOM。

第三演示出現工作,但它只能因爲resultRight的變化,因爲它是被動的,Vue公司知道更新DOM。 resultWrong同時呈現,但僅限於,因爲Vue根據resultRight中的更改進行呈現。

由於第一個演示失敗的相同原因,第四個演示失敗。 resultWrong獲得新的屬性,但Vue不知道知道關於這些屬性。並且因爲您沒有更改對象引用(因爲當您將resultRight更改爲tmp時),Vue不知道它需要更新DOM。

+0

但我不知道爲什麼第三個演示(https://jsfiddle.net/ccforward/7f42owpc/4/ ) 能行得通 ? – ccforward

+0

@ccForward第三個演示程序不太適用。它顯示'resultWrong'的數據,但它們不是*反應*。你可以看看你是否記錄這些值。 – Bert

+1

@ccForward添加了一些進一步的解釋。希望它澄清。 – Bert