亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在承諾解析并將道具傳遞給嵌套子項時更新 Vue 組件

如何在承諾解析并將道具傳遞給嵌套子項時更新 Vue 組件

萬千封印 2023-01-06 09:33:45
我有父組件和子組件。父母的數據在 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                             })}}
查看完整描述

1 回答

?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

在創建的鉤子中,將組件實例分配給一個this名為的變量that并在回調中訪問它,因為在回調中你在 vue 組件上下文之外(this):



created() {

  var vm = self;

  var that=this;

  this.firstQuery(...)

      .then(function(data){

                 that.query = data;

                 console.log('firstQuery', this.query);


              


                 that.ready = true;

                 self.isLoaded(); 

            })

}

}


查看完整回答
反對 回復 2023-01-06
  • 1 回答
  • 0 關注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號