我将Nuxt用作前端服务器,并且在pages文件夹中有一个索引页面,我想在其中使用vue-material自动完成程序包。为此,我有一个插件可以按如下方式导入我的包:
import Vue from 'vue'
Vue.config.productionTip = false
import VueMaterial from 'vue-material'
import 'vue-material/dist/vue-material.min.css'
import 'vue-material/dist/theme/default.css'
Vue.use(VueMaterial)
然后在我的页面中,我有以下脚本,该脚本从后台获取数据并将其获取到商店的状态:
export default {
async fetch (context) {
let { data } = await context.$axios.get('http://127.0.0.1:8000/')
context.store.commit('my_data', data)
},
现在在此之下,我必须使用vue-material doc建议的类似方法:
data: () => this.$store.dispatch('my-data'), <- Doesn't work
methods: {
getMyData (searchTerm) {
this.mydata = new Promise(resolve => {
window.setTimeout(() => {
if (!searchTerm) {
resolve(this.my_data)
} else {
const term = searchTerm.toLowerCase()
resolve(this.my_data.filter(({ name }) => name.toLowerCase().includes(term)))
}
}, 500)
})
}
}
如您所见,我想加载以前存储在商店中的日期。而且this.$store.dispatch
之类的命令均无效。它总是会引起未定义this
的错误。
我不确定我要解决的方法是否是解决此问题的最佳方法,但要点是,当我使用自定义词典而不是数据时,自动完成功能会很好地工作。
答案 0 :(得分:0)
您可以使用asyncData从商店(https://nuxtjs.org/guide/async-data)加载数据
async asyncData(context) {
let result = await context.store.dispatch('my-data')
return {
data: result
}
}