【发布时间】:2016-05-16 01:20:53
【问题描述】:
为了使组件可拖动,我编写了一个新的 vue 指令,如下所示
Vue.directive('drag', {
bind: function () {
$(this.el).draggable();
}
});
我让它们在bind 上可拖动。
这在检查器中工作正常,如果我拖动卡片,我会看到 top 和 left 的变化,但实际上并没有!我的意思是卡片留在原处。
Screenshot of the inspector. Looks fine.
我已经用helper: "clone" 进行了尝试,这很有效(我可以看到克隆被拖动)。但这不是我想要的。
如果我通过类选择器选择每张卡片,例如:
$(".card").draggable();
它也可以正常工作,但我不想在添加一个新元素后再次使所有其他元素可拖动。
我做错了什么?
【问题讨论】:
-
这种定位通常需要
display: absolute或display: relative。你的 CSS 会干扰吗? -
我有一个修补程序,它可以工作,但我不满意:
setTimeout(function () { $(this.el).draggable(); }.bind(this), 20);通常 jQuery 会设置这个,但你的评论指向正确的方向。 -
Vue 的
nextTick在这种情况下可能是您所需要的。它在执行任何挂起的 DOM 更新后调用一个函数。 -
将 $(this.el).draggable() 放入更新中?