我正在尝试设置 gridstack.js 以使用我的 vue 组件,就像它在这个淘汰赛示例中所做的那样:https ://github.com/troolee/gridstack.js#use-with-knockoutjs/ 。
这是我所拥有的代码笔:https ://codepen.io/nyoung697/pen/BperoZ
- 单击“文本框”3 次,将 3 个文本框添加到表单中。
- 通过将鼠标悬停在顶部并单击垃圾桶来删除顶部文本框。
从上到下删除它们效果很好(看起来如此)。最新的元素位于顶部,因为 gridstack 将其添加到顶部。所以这是数组中的最后一个元素。
- 现在尝试调整文本框的大小并以随机顺序删除它们。
Gridstack 变得混乱并在页面上交换元素。我不知道它为什么这样做。有人可以帮我解决这个问题吗?几个星期以来,我一直在兜圈子,尝试了很多不同的事情。
我添加了一些控制台日志记录以显示正在引用的 id。当您按照添加的最后一个元素的顺序删除元素时,“destroyed”方法中的 id 与所有其他被命中的方法/钩子相同。但是,如果您尝试以随机顺序删除它们,那么在被破坏的方法中打印的 id 是不同的。
销毁:
Vue.component('ntextbox', {
template: '#textboxtemplate',
props: ['component'],
created () {
console.log('created textbox control');
},
methods: {
removeWidget: function(){
console.log('child remove: ' + $(this.$el).attr('id'));
this.$emit('remove');
}
},
destroyed () {
console.log('textbox control destroyed');
var grid = $('.grid-stack').data('gridstack');
console.log(grid);
console.log($(this.$el).attr('id'));
grid.removeWidget(this.$el);
//console.log(grid);
}
});