#javascript #vue.js #vuejs2 #vue-component #dom-events
#javascript #vue.js #vuejs2 #vue-компонент #dom-события
Вопрос:
У меня есть массив таких объектов:
orders : [
{
id: 1,
image: require("./assets/imgs/product1.png"),
originalPrice: 40,
discountPrice: "",
buyBtn: require("./assets/icons/buy.svg"),
likeBtn: require("./assets/icons/like.svg"),
productName: "Marianna Collection",
productRating: "★★☆☆☆",
class: "new"
},
{
id: 2,
image: require("./assets/imgs/product2.png"),
originalPrice: 60,
discountPrice: 30,
buyBtn: require("./assets/icons/buy.svg"),
likeBtn: require("./assets/icons/like.svg"),
productName: "Marianna Collection",
productRating: "★★☆☆☆",
class: "new"
},
]
Теперь я хочу отобразить только одну цену в моей корзине, поэтому я хочу сказать:
if discountPrice ! = '' show discountPrice else show originalPrice
Вот что я пробовал:
<td class="tg-lqy6" :class="order.discountPrice != '' ? 'exist' : ''" id="originalPrice">{{ order.originalPrice }} sr</td>
<td class="tg-lqy6" :class="order.discountPrice != '' ? 'exist' : ''" id="discountPrice">{{ order.discountPrice }} sr</td>
и оформил это так:
#originalPrice.exist{
display: none !important;
}
#discountPrice{
display: none !important;
}
#discountPrice.exist{
display: block !important;
}
Это работает, но я хочу сделать это с помощью методов. Я хочу иметь в данных переменную цены, которая принимает значение цены, потому что я умножу ее на сумму, чтобы получить общую сумму, и я не могу этого сделать с этим кодом.
Комментарии:
1. Не совсем понятно, чего вы хотите достичь. Не могли бы вы указать лучше? Старайтесь не смешивать числа со строками. Как сказал како-джун в ответе, лучше установить
discountPrice = -1
илиdiscountPrice = null
аннулировать это свойство. В сравнении свойств класса тегов используйте::class="order.discountPrice > -1 ? 'exist' : ''"
или:class="order.discountPrice != null ? 'exist' : ''"
Ответ №1:
Пожалуйста, используйте v-if
.
<td class="tg-lqy6" v-if="order.discountPrice !== ''" id="discountPrice">{{ order.discountPrice }} sr</td>
<td class="tg-lqy6" v-else id="originalPrice">{{ order.originalPrice }} sr</td>
Вам не нужно ничего добавлять в CSS.
Не рекомендуется, чтобы discountPrice имел тип string или number . Начальное значение discountPrice должно быть -1
.
<td class="tg-lqy6" v-if="order.discountPrice >= 0" id="discountPrice">{{ order.discountPrice }} sr</td>
<td class="tg-lqy6" v-else id="originalPrice">{{ order.originalPrice }} sr</td>
Комментарии:
1. хорошо, отредактируйте это большое вам спасибо, я добавил решение, которое я попробовал, которое позволит мне рассчитать количество, которое вы можете проверить
2. @AhmedSarhan если ответ полезен, вы могли бы поддержать его, не нужно говорить спасибо
Ответ №2:
Вы могли бы использовать условный рендеринг v-if/v-else
:
<td class="tg-lqy6" v-if="order.discountPrice === ''" >{{ order.originalPrice }} sr</td>
<td class="tg-lqy6" v-else >{{ order.discountPrice }} sr</td>
Комментарии:
1. Не
<td>{order.discountPrice||order.originalPrice}</td>
сработает?2. большое вам спасибо, я добавил решение, которое я попробовал, которое позволит мне рассчитать количество, которое вы можете проверить
3. был ли мой ответ полезным?
4. Мне очень жаль, я не хотел быть грубым, и да, это полезно, но я только что создал функцию, потому что я собираюсь использовать значение для других данных