【发布时间】:2019-09-19 01:44:24
【问题描述】:
我正在使用 vue js 和 bootstrap-vue 制作一个可编辑的表,允许用户使用 v-on:change 对表进行更改,以帮助 axios 更新数据库。限制是语言是唯一的并且不能是空字符串,如果用户犯了错误,我似乎无法恢复该值。推荐的方法是什么?非常感谢任何帮助。
我试图通过以下方式“刷新”表格:
this.languages = this.languages;
似乎没有刷新表中的值。
vue组件上的一段:
<b-table striped hover :items="filtered" :fields="fields">
<template slot="name" slot-scope="data">
<b-form-input type="text" :value="data.item.name" v-on:change="updateLanguage($event,data.item.id)"></b-form-input>
</template>
</b-table>
在vue导出默认的方法中:
updateLanguage(e,id) {
if(e.trim()){
const find_langauge = this.languages.find(language=>{
return language.name.toLowerCase() === e.toLowerCase();
});
find_langauge ? this.languages = this.languages : console.log('no match');
} else {
console.log('cannot be empty');
this.languages = this.languages;
}
}
在计算中:
filtered() {
return this.search ? this.languages.filter(language=>
language.name.toLowerCase().includes(this.search.toLowerCase())) : this.languages;
}
【问题讨论】:
-
有人知道如何将值放入表中的事件中吗?如果我传递 on 更改整个对象而不仅仅是 ID,我可以从数组中获取原始值
-
e.target.value 似乎不起作用,因为 e 已经是有效负载。任何人都知道如何定位目标元素,以便我可以执行 $event.target.value = this.item.name 吗?
-
我试图将语言的状态从 vuex 加载到实例 this.languages 中,不更新输入实例中的 :value。
标签: vue.js bootstrap-vue