【发布时间】:2019-04-24 12:42:07
【问题描述】:
如何使用 Nuxt 声明计算属性?还是等价的?
我正在使用 NuxtJs 并尝试使用类别过滤器。
我想按唯一类别进行过滤,我收到以下错误消息:
Cannot read property 'filter' of undefined
我试图适应 Nuxtjs 我在这支笔中找到的例子:https://codepen.io/blakewatson/pen/xEXApK
我在下面声明这个计算属性,首先在 pages/index.vue 中,然后在 .nuxt/App.js 中
filteredStore: function() {
var vm = this;
var category = vm.selectedCategory;
if(category=== "All") {
return vm.stores;
} else {
return vm.stores.filter(function(stores) {
return stores.category === category;
});
}
}
我尝试将过滤器应用到此复选框列表中:
<div class="columns is-multiline is-mobile">
<div class="column is-one-quarter" v-for="store in filteredStore" :key="store.id" :store="store">
<label class="checkbox">
<input type="checkbox" v-model="selectedCategory" :value="''+store.category">
{{store.category}}
</label>
</div>
</div>
【问题讨论】:
-
首先你不应该接触 .nuxt 中的任何东西。二、什么是店铺?你声明了吗?
-
Json 中有 30 家商店的列表工作正常。
-
在 console.log 中我发现了错误消息:避免直接改变 prop,因为只要父组件重新渲染,该值就会被覆盖。相反,使用基于道具值的数据或计算属性。正在变异的道具:“商店”
-
我在 pages/index.vue 在创建的生命周期钩子上获取数据,我正在使用 axios,我可以看到并显示未过滤的数据:this.stores = response.data
-
我拥有的分类列表;珠宝首饰 首饰 洗衣房 图书馆 图书馆 宠物店 Turism 衣服 衣服