【发布时间】:2019-10-07 22:45:52
【问题描述】:
我在 .vue 文件中有一个表格组件,我正在尝试根据单击的订单的目录显示一些图标
示例:
<th v-for="(column, index) in columns" :key="index" @click="sort( index )">
<span>{{ column.label }}
<i v-if="column.dir == 'desc'" class="fa fa-sort-down"></i>
<i v-else class="fa fa-sort-up"></i>
</span>
上面是标题的布局,我的默认列对象是这样的:
data().....
columns: [
{
label: '#',
order: false,
search: false,
column: 'id',
dir: 'desc'
},
{
label: 'Username',
order: true,
search: true,
column: 'username',
dir: 'desc'
}]
现在在我的排序方法中,我更新点击的列
var col = this.columns[column];
col.dir = ( col.dir == 'desc' ) ? 'asc' : 'desc';
// I tried to no avail
this.$set(this.columns, index, col);
Vue.set(this.columns, index, col);
Also
this.$nextTick(function() {
columns[index].dir = ( columns[index].dir == 'desc' ) ? 'asc' : 'desc';
});
如果我检查我的 Vue 开发工具,我可以看到值已更新,但反应永远不会回到主列对象,并且视图不会更新以显示 else 部分。
可能没有牢牢掌握这个概念,任何帮助将不胜感激。谢谢
更新.....
非常感谢您的帮助,所以我碰巧 font-awesome 正在从 DOM 中删除 并用 SVG 替换它,这使得 vue js 无法找到它。
尽管如此,我仍然会在下面选择一个答案。
【问题讨论】:
-
列是数据吗?
-
@HamiltonGabriel 是的
-
@MueyiwaMosesIkomi 我认为这篇文章会有所帮助 - stackoverflow.com/questions/40453427/…
-
问题是您使用
index作为键。相反,请使用唯一标识符。说column? -
尝试了类似@DJC 的方法,但没有用......我认为它适用于布尔值,但不适用于字符串。不过谢谢
标签: javascript vue.js vuejs2 vue-component