这是我当前的模板:
<a-droppable v-for="n in curSize" :key="n - 1" :style="{width: `${99.99 / rowLenMap[orderList[n - 1]]}%`, order: orderList[n - 1]}">
<a-draggable :class="{thin: rowLenMap[orderList[n - 1]] > 10}">
<some-inner-element>{{rowLenMap[orderList[n - 1]]}}</some-inner-element>
</a-draggable>
</a-droppable>
问题是我必须rowLenMap[orderList[n - 1]]
多次编写,而且恐怕vue.js引擎也会多次对其进行计算。
我想要的是这样的:
<a-droppable v-for="n in curSize" :key="n - 1" v-define="rowLenMap[orderList[n - 1]] as rowLen" :style="{width: `${99.99 / rowLen}%`, order: orderList[n - 1]}">
<a-draggable :class="{thin: rowLen > 10}">
<some-inner-element>{{rowLen}}</some-inner-element>
</a-draggable>
</a-droppable>
我认为从技术上实现并不难,因为可以通过使用来笨拙地解决它v-for="rowLen in [rowLenMap[orderList[n - 1]]]"
。那么,有没有简洁而正式的解决方案?
这似乎是子组件的完美用例。您可以简单地将复杂的计算值作为属性传递给组件。
https://vuejs.org/v2/guide/components.html#Passing-Data-to-Child-Components-with-Props