首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Vue.js + jQuery UI可拖动

Vue.js + jQuery UI可拖动
EN

Stack Overflow用户
提问于 2016-02-06 06:37:22
回答 3查看 6.5K关注 0票数 4

为了使组件可拖动,我编写了一个新的vue指令,如下所示

代码语言:javascript
运行
复制
Vue.directive('drag', {
  bind: function () {
    $(this.el).draggable();
  }
});

我让它们在bind上可拖拽。这在检查器中工作得很好,如果我拖动卡片,我会看到topleft是如何变化的,但它在物理上没有变化!我的意思是这些卡片会留在他们的地方。Screenshot of the inspector. Looks fine.

我已经在helper: "clone"上试过了,这很有效(我可以看到克隆被拖走了)。但这不是我想要的。

如果我按类选择器选择每一张牌,如下所示:

代码语言:javascript
运行
复制
$(".card").draggable();

它也工作得很好,但我不想在添加了一个新的元素后再次使所有其他元素都可拖动。

我做错了什么?

EN

回答 3

Stack Overflow用户

发布于 2016-02-12 02:24:34

为了使用jquery ui函数,需要用nextTick调用它。如下所示:

代码语言:javascript
运行
复制
Vue.nextTick(function () {
        $('.card').draggable();
});
票数 2
EN

Stack Overflow用户

发布于 2016-04-20 00:25:08

你不需要使用nextTick。由于问题在于是在元素加载之前调用的,所以您可以像其他所有使用jQuery的人一样使用jQuery的.ready方法

代码语言:javascript
运行
复制
Vue.directive('draggable', {
    bind: function () {
        var self = this
        $(document).ready(function () {
            $(self.el).draggable()
        })
    }
})
票数 2
EN

Stack Overflow用户

发布于 2017-12-13 19:15:21

来自https://vuejs.org/v2/api/#mounted

代码语言:javascript
运行
复制
mounted: function () {
  this.$nextTick(function () {
    // Code that will run only after the entire view has been rendered
    $('.card').draggable();
  })
}

顺便说一下,$(this.el).draggable()不能工作,我不知道为什么

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35234754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档