我有父組件和子組件。父母的數據在 ajax 調用后填充,我想將其作為道具傳遞給孩子。我嘗試了不同的解決方案,我會發布兩個,但還沒有工作:你能指出錯誤嗎?該組件確實對更改做出反應。我還需要確保道具正確傳遞給孩子及其嵌套的孩子。嘗試:如果我不使用'v-if'指令,我將得到一個錯誤,因為:query它作為 null 傳遞。所以我使用v-if(見下面的版本)并更新渲染,但它沒有反應并保持為空(即使數據已正確更新)。我還嘗試在不使用 v-if 指令的情況下將查詢數據初始化為計算結果,因為畢竟我只需要緩存前提的結果。我還嘗試在總線上發出事件,但組件沒有反應。最后,我嘗試通過使用 :key(例如:key="ready")使組件具有反應性,它應該在更改時使組件具有反應性:key。但是還是沒有效果。模板:<template> <div v-if="isLoaded()"> <input> <metroline></metroline> <grid :query="query"></grid> </div></template>腳本:export default {data() { return { ready : false, query : null }},components : { metroline : Metroline, grid : Grid},methods: { isLoaded() { return this.ready }, firstQuery( uid, limit, offset) { var url = // my url // using Jquery to handle cross origin issues, solving with jsonp callback... return $.ajax({ url : url, dataType: 'jsonp', jsonpCallback: 'callback', crossDomain: true }) }},created() { var vm = self; this.firstQuery(...) .then(function(data){ this.query = data; console.log('firstQuery', this.query); // attempts to pass through the query // bus.$emit('add-query', this.query); this.ready = true; self.isLoaded(); // using a self variable, temporarily, jquery deferred messed up with this; however the this.query of vue instance is properly updated })}}
如何在承諾解析并將道具傳遞給嵌套子項時更新 Vue 組件
萬千封印
2023-01-06 09:33:45