javascript - 计算属性内的复杂 V-If?
问题描述
我正在尝试添加一个在模板中工作的复杂 v-if 语句,但是当我添加更多内容时,在模板中处理的内容太多了。
我已将该语句添加到计算属性中,该属性在计算属性的评估过程中引发错误。有任何想法吗?
<div v-for="offer in offers" class="grid-4 item hotel hotel-item" v-if="showOffer">
<!-- OFFER CONTENT HERE -->
</div>
computed: {
showOffer() {
return (offer.island === filters.islandFilter || filters.islandFilter === 'All') &&
(offer.starrating === filters.starRating || filters.starRating === 'All') &&
(offer.board === filters.boardBasis || filters.boardBasis === 'All') &&
(offer.duration === filters.duration || filters.duration === 'All') &&
(offer.price.from < filters.price)
}
}
我试图返回对 V-if 语句正确的 offer 数据属性中的每个“offer”。
解决方案
通过offer
作为参数传递,尝试使用方法而不是使用计算属性:
<div v-for="offer in offers" class="grid-4 item hotel hotel-item" v-if="showOffer(offer)">
<!-- OFFER CONTENT HERE -->
</div>
methods: {
showOffer(offer) {
return (offer.island === filters.islandFilter || filters.islandFilter === 'All') &&
(offer.starrating === filters.starRating || filters.starRating === 'All') &&
(offer.board === filters.boardBasis || filters.boardBasis === 'All') &&
(offer.duration === filters.duration || filters.duration === 'All') && (offer.price.from < filters.price)
}
}
但我推荐另一种使用计算属性的方法,它返回一个数组,offers
通过返回符合给定条件的项目并删除v-if
指令来过滤你的数组:
computed: {
comp_offers() {
return this.offers.filter((offer) => {
return (offer.island === filters.islandFilter || filters.islandFilter === 'All') &&
(offer.starrating === filters.starRating || filters.starRating === 'All') &&
(offer.board === filters.boardBasis || filters.boardBasis === 'All') &&
(offer.duration === filters.duration || filters.duration === 'All') && (offer.price.from < filters.price)
})
}
}
<div v-for="offer in comp_offers" class="grid-4 item hotel hotel-item">
<!-- OFFER CONTENT HERE -->
</div>
推荐阅读
- javascript - 接收未捕获的 RangeError:String.replace 超出了最大调用堆栈大小
- matlab - Calculating Normalized Root Mean Square Error
- python - Failing task since return code was -1 while expected 0 - Bamboo
- python - How can I groupby the datetime hour to have a calculation in dataframe and output as time interval result?
- python - 如何在这样的熊猫中进行条件比较?
- xamarin.forms - Xamarin Release Build 出错,无法解析 System.Void Xamarin.Forms.Log::Warning(System.String,System.String)
- coq - `0 1的更简单证明
我想知道该陈述的更短或更简单的证明
forall a:nat, 0 < a -> 1 < a + 1
。在 mathcomp/ssreflect 中。我有以下证明,但希望存在更优雅的证明。
From mathcomp Require Import all_ssreflect. Goal fora
- java - Camera Intent doesn't save image to gallery
- twilio - 如何替换 twilio flex AgentDesktop 中的 QUEUES 内容?
- java - 如何使用 DB 数据动态添加或删除 spring 框架的调度程序(服务器处于运行状态)?