在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ vue 怎么調(diào)用子組件,根據(jù)傳值來刷新子組件的內(nèi)容

vue 怎么調(diào)用子組件,根據(jù)傳值來刷新子組件的內(nèi)容

父組件是一個顯示多個商品的列表,子組件是一個彈窗組件,然后子組件根據(jù)列表傳過來的id再重新請求數(shù)據(jù),在這個彈窗組件改變數(shù)據(jù),請問是用 watch 這個方法嗎?還有別的方法嗎?因?yàn)榧偃缥尹c(diǎn)擊第 10 個商品,在子組件增加了一個看下一條方法,看到第 20 個商品后,關(guān)閉出來再次點(diǎn)擊第 10 個商品,子組件仍然顯示的是第 20 個商品的內(nèi)容,原因是 watch 看到傳來的還是第 10 個商品的 id,所以不會再改變,請問有什么好的方法解決嗎?謝謝。

回答
編輯回答
別瞎鬧

watch傳進(jìn)來的id,id改變了就去請求接數(shù)據(jù)。按道理是沒有什么問題的。

2018年1月10日 14:09
編輯回答
陌顏

你肯定是在子組件本地來改變id了吧 你應(yīng)該 點(diǎn)擊下一條的時候 給父組件$emit一個事件 讓父組件去改邊 傳給子組件的id

<ul>

  <li v-for="(val,index) in list" @click="currIndex=index"></li>

</ul>

<my-com :id="list[currIndex].id" @nextitem="currIndex<list.length-1&&currIndex++"></my-com>


data :
{
 currIndex:'',
 list:[
   {id:'',name:''},
   {id:'',name:''},
   {id:'',name:''}
]

}
2018年1月17日 10:41
編輯回答
神曲

首先感謝哥們 @DavidWangDong 給我提供的幫助

我后來對于問題的解決方法是強(qiáng)制給子組件的 watch 方法里面發(fā)送一個會變動數(shù)據(jù),那就是時間,本來每次都是會發(fā)送一個 id,然后子組件根據(jù)不同的 id 來請求數(shù)據(jù),從而讓頁面看上去會改變,但是有時候會發(fā)和上一次相同的 id 過去給子組件,而子組件已經(jīng)接受過這個相同 id,這個時候 watch 里面的方法就不會被執(zhí)行了,而我想的就是要讓它也執(zhí)行,于是我這樣做

父組件中的子組件
<project v-show='isShow' :toProject='messagesContent'></project>

messagesContent 本來存放的是 id
同時再多傳一個 newTime
發(fā)送的是下面的時間
var new_time = new Date();
var obj = {
  id: id,
  time: new_time
}
this.messagesContent = obj
子組件的 watch 方法,因?yàn)楦競鬟^來都會帶著時間,所以 watch 一定會執(zhí)行里面的 doSomething 方法
watch: {
      toProject: function () {
      this.doSomething();
      }
  },
2017年4月28日 00:05