Javascript 每次计算的方法被称为Vuejs时都添加一个加载器
我有一个过滤方法,每次选中复选框都会进行过滤。我想在单击复选框进行筛选时添加一个加载程序,然后显示方法的结果。下面显示了我尝试过的内容,但加载程序始终保持不变 HTML 模板Javascript 每次计算的方法被称为Vuejs时都添加一个加载器,javascript,html,vue.js,Javascript,Html,Vue.js,我有一个过滤方法,每次选中复选框都会进行过滤。我想在单击复选框进行筛选时添加一个加载程序,然后显示方法的结果。下面显示了我尝试过的内容,但加载程序始终保持不变 HTML 模板 <div v-if="load" class="lds-dual-ring"></div> <div v-else> <div class="col-xl-3 col-lg-4 col-md-6 col-sm-6 col
<div v-if="load" class="lds-dual-ring"></div>
<div v-else>
<div class="col-xl-3 col-lg-4 col-md-6 col-sm-6 col-9" v-for="product in computedProducts">
<img :src="product.photo.url" alt="" class="main_img">
<p>{{ product.name }}</p>
<div class="hover">
<p>{{ product.name }}</p>
<a :href="product.document.url"><img src="img/pdf_icon_white.svg" alt=""></a>
<p>Factsheet als PDF downloaden</p>
</div>
</div>
</div>
在JavaScript中过滤数组的时间不应超过几毫秒。为什么要显示加载指示器?我知道,但我必须添加加载程序。有没有办法延迟过滤并添加加载程序?我还是不明白。你为什么需要加载器?这是一个非常糟糕的设计,会造成糟糕的用户体验。如果此代码对您有所帮助,请对其进行评级,Thanks FilteredProducts是computed属性中的一个方法,每次选中复选框并过滤产品时,它都会加载。我无法在方法上编写它您可以在单击所需元素
v-on=“funName()”
后运行函数。我是从你的密码里发现的。我希望您已经使用了它。当我执行v-on=“filteredProducts()”时,它抛出“无参数v-on预期对象值”错误
var app = new Vue({
el:'#app',
data: {
load: false,
},
computed:{
filteredProducts(){
setTimeout(() => this.load = true , 1000)
if(!this.checkedCountries.length){
return this.products
}
const filtered_products= this.products.filter( product => this.checkedCountries.includes(product.categories[0].name))
if(this.checkedCountries.length && !filtered_products.length){
this.message = "There are no products to show"
}else{
this.message = null
}
return filtered_products
},
computedProducts(){
if(this.pages === 1){
return this.filteredProducts
}else{
const firstIndex = (this.page -1) * this.perPage
const lastIndex = this.page * this.perPage
window.scrollTo(0,0)
return this.filteredProducts.slice(firstIndex,lastIndex)
}
},
}
<div v-if="load" class="lds-dual-ring"></div>
<div v-else>
<div class="col-xl-3 col-lg-4 col-md-6 col-sm-6 col-9" v-for="product in computedProducts">
<img :src="product.photo.url" alt="" class="main_img">
<p>{{ product.name }}</p>
<div class="hover">
<p>{{ product.name }}</p>
<a :href="product.document.url"><img src="img/pdf_icon_white.svg" alt=""></a>
<p>Factsheet als PDF downloaden</p>
</div>
</div>
</div>
methods : {
filteredProducts : function() {
// some code
this.load = // true or // false
}
}