Прежде всего, причина, по которой ваш prop="(original_price - discount_value)"
не работал, заключается в том, что атрибут prop
оценивается как текст, если вы не используете синтаксис v-bind
.Так что это должно работать:
v-bind:prop="(original_price - discount_value)"
Однако для этого можно использовать вычисленные свойства в VueJS, чтобы абстрагировать всю эту логику вычислений от шаблона: вы можете выполнять вычислениятам, и просто используйте директиву v-bind
, чтобы связать вычисленное значение с элементом.Назовем ваше вычисляемое свойство finalPrice
.В своем коде приложения / компонента VueJS вы можете сделать следующее:
computed: {
finalPrice() {
return this.original_price - this.discount_value;
}
}
Затем обновите разметку, чтобы использовать v-bind:prop="finalPrice"
:
<el-table-column
v-if="promoActive"
v-bind:prop="finalPrice"
label="Final Price"
width="180">
</el-table-column>
p / s: если вы предпочитаетеиспользуйте сокращения, не беспокойтесь: :prop="finalPrice"
(обратите внимание на префикс :
) синтаксически идентичен v-bind:prop="finalPrice"
.
Не рекомендуется, но все же выполнимо: если вы хотите передать аргументы для выполнениявместо расчетов вместо этого вы можете использовать метод:
method: {
calculateFinalPrice(original, discount) {
return original- discount;
}
}
И ваша разметка будет:
<el-table-column
v-if="promoActive"
v-bind:prop="calculateFinalPrice(original_price, discount_value)"
label="Final Price"
width="180">
</el-table-column>