我从官方示例中获得了更新grid example。 在我的应用程序中需要将填充sortOrders数组移动到
created: function () {
var vm = this;
this.columns.forEach(function (key) {
vm.sortOrders[key] = 1
})
},
尝试对列进行排序,但排序只发生一次。
重现的步骤: 点击"名称"列标题超过1次。 期望:每次点击列标题时进行列排序 得到:列排序只有一次。
https://jsfiddle.net/xkkbfL3L/1916
不明白为什么
Vue.set(this.sortOrders, key, order);
强制this.sortOrders
变量
如果使用像
这样的tmp变量,它的工作正常 var order = this.sortOrders[key]*-1;
var tmp = this.sortOrders ;
Vue.set(tmp, key, order);
this.sortOrders = [];
this.sortOrders = tmp;
答案 0 :(得分:2)
当您将1更改为-1并且对我来说似乎不是预期的行为时,看起来Vue没有触发更新。在Vue的Github页面上可能值filing an issue,其中一个vue开发者可以解释更多有关此行为的信息。不过,作为一种快速解决方法,您只需在应用更新的密钥值之前将this.sortKey
设置为null
:
sortBy: function (key) {
this.sortKey = null;
this.sortKey = key;
var order = this.sortOrders[key]*-1;
Vue.set(this.sortOrders, key, order);
}
这是JSFiddle:https://jsfiddle.net/xkkbfL3L/1920/
答案 1 :(得分:0)
得到了Vue Github的答案https://github.com/vuejs/vue/issues/6933
问题是应用程序在此之前已经创建了这些密钥,即在创建时 - 并且不会使用$ set()。
created: function () {
var vm = this;
this.columns.forEach(function (key) {
vm.$set(vm.sortOrders, key, 1)
})
},