2 回答

TA貢獻1797條經驗 獲得超6個贊
我認為這里沒有您想要的那么簡單的解決方案。但也有一些可能性。
v-bind您可以使用和的對象形式將其略微減小v-on。對于v-bind您需要引入一個方法來返回對象,因為您的道具依賴于channeland index,因此它們需要傳遞給該方法。這會減少一點,但它不是很好。屬性的對象形式is也可能是一個選項。這可能會進一步擠壓它,但會以清晰度為代價。
另一種方法是引入另一個組件,然后為SelectCard. 例如:
<div>
<div v-if="conditionA">
<div v-if="conditionA-A">
<slot />
</div>
<div v-else>
<slot />
</div>
</div>
<div v-else>
<div v-if="conditionB-A">
<slot />
</div>
<div v-else>
<slot />
</div>
</div>
</div>
然后將SelectCardin 作為插槽內容傳遞,并使用計算屬性使數組動態化。
這種方法的一個問題是,您可能會發現自己必須在組件的各個層之間傳遞很多東西才能使其正常工作。
另一種選擇是將所有內容轉換為render函數。您絕對可以使用函數來做您想做的事情,render但這會以不得不放棄使用模板為代價。這是否真的是一個問題將取決于模板其余部分的復雜性。

TA貢獻1804條經驗 獲得超8個贊
將 的所有邏輯v-if's放入一個計算屬性中,該屬性返回您想要傳遞為的正確數組。SelectCard 類似于以下內容的道具:
<SelectCard :arr="arrayToRender"/>
...
computed: {
arrayToRender(){
if (ConditionA){ return Array_A}
if ....
}
添加回答
舉報