热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

vuedraggable示例_vuedraggable快速入门

value和list这两个都可以给一个draggable注入数据源:*value注入数据源*exportdefault{data(){return{list:[{na

value和list

这两个都可以给一个draggable注入数据源:

/*value注入数据源*/

export default {

data() {

return {

list:[{

name:'aaa',id:1,

},{

name:'bbb',id:2,

}]

};

}

}

/*list注入数据源头*/

export default {

data() {

return {

list:[{

name:'aaa',id:1,

},{

name:'bbb',id:2,

}]

};

}

}

它们的区别是:value注入的,如果发生了拖拽,value的数据并不会跟着变化,list注入的,则会发生变化。

也就是说value注入的,后续有无变化都和数据体没关系,它用于只需要展示拖拽效果的地方;list注入的,数据体和当前页面上的属性是保持一致的,页面上的顺序变了,内部数组对应的结构体数组的顺序也会重新排列,和显示保持一致。

注意,它们不能同时出现,只能二选一。

ghost-class和handle

ghost指的在拖拽体原本位置占坑的那个元素:

ghost-class就是给占坑元素设置样式:

.ghost {

opacity: 0.5;

background: #c8ebfb;

}

handle是拖拽的把手,表示拖拽元素指定可拖拽的部分:

正常情况下拖拽元素的整体都是可拖拽的,加了handle之后,只能指定的地方可以拖拽了,其他地方不能进行拖拽:

{{ element.name }}

tag和componentData

对于一些特定的原生组合标签,例如ul,li或者table,tr还有tr,td之类的,可以指定一个tag,让draggable替换成指定的标签:

{{ item.id }}{{ item.name }}{{ item.sport }}

例如上面的draggable就会被替换成table。

componentData和tag类似,但是是对于那种组合组件的,例如在ElementUI中的折叠面边,el-collapse和el-collapse-item就是这种组合关系:

与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;
在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。
控制反馈:通过界面样式和交互动效让用户可以清晰的感知自己的操作;
页面反馈:操作后,通过页面元素的变化清晰地展现当前状态。

对于上面那种情况,如果要转成vuedraggable的话,首先要设置tag,但是那些el-collapse上的数据怎么办呢?就要通过component-data配置了:

{{ lign }}

export default {

name: "third-party",

display: "Third party",

order: 10,

components: {

draggable

},

data() {

return {

list: [

{

title: "Consistency",

id: 1,

text: [

"Consistent with real life: in line with the process and logic of real life, and comply with languages and habits that the users are used to;",

"Consistent within interface: all elements should be consistent, such as: design style, icons and texts, position of elements, etc."

]

},

{

title: "Feedback",

id: 2,

text: [

"Operation feedback: enable the users to clearly perceive their operations by style updates and interactive effects;",

"Visual feedback: reflect current state by updating or rearranging elements of the page."

]

}

],

activeNames: [1],

collapseComponentData: {

on: {

change: this.inputChanged

},

props: {

value: this.activeNames

}

}

};

},

methods: {

inputChanged(val) {

this.activeNames = val;

}

}

};

上面代码中的collapseComponentData就是将原来el-collapse上传递数据的部分抽离出来了,包括事件(on),属性(prop,attr)的设置。

group和clone

group一般的用法是用来区分拖拽组的,group名称相同的拖拽组可以互相拖放:

{{ element.name }} {{ index }}

{{ element.name }} {{ index }}

互相拖放的一般效果如下:

group属性还有更详细的配置,例如:group="{name:'abc',pull:'clone',put:false}"。

put参数比较简单,是用来控制别的地方内容是否可以拖拽到自己这边来。如果设置为false,那么就表示别的地方的内容无法拖拽到自己这边来。

pull参数控制的是从当前拽走,放在另外一个地方的行为。默认情况下(设置为true)是你拽到另外一个地方去,当前列表中就会少一个,对方列表多一个。如果设置为'clone',那么当前列表不会减少,同时对方列表多了一个。

当然你甚至可以配置一个:clone='func',用来控制放入对方列表的内容,我们看一个复杂一点的例子:

{{ element.name }} {{ index }}

{{ element.name }} {{ index }}

export default {

methods: {

clone: function(el) {

return {

name: el.name + " cloned"

};

},

pullFunction() {

return Math.random()*10%2 ? "clone" : true;

},

}

};

上面的代码中,pull设置为true还是'clone'是随机的(pullFunction)。如果设置的true,那么就是当前少一个,对方多一个;如果是'clone',同时:clone='func',那么就会用调用你自定义的clone方法,当前不少,对方多一个。

transition-group和animation

vuedraggable中的动画主要分成两类,一类是交换过程的动画:

上图我们可以看到,拖拽元素每经过一个内容项,它就会发生动画移动的效果,这个主要是通过animation的设置:

{{ element.name }} {{ index }}

还有一种就是只有交换的双方才有动画:

这种和上面的不一样,这种交换过程中没有动画,但是只是最后真正交换的时候才有动画,这种需要加个class就好了:

{{ element.name }} {{ index }}

.flip-list-move {

transition: transform 0.5s;

}

给transition-group添加一个name属性ABC,然后增加一个ABC-move的样式类就好了



推荐阅读
  • 深入解析 Android IPC 中的 Messenger 机制
    本文详细介绍了 Android 中基于消息传递的进程间通信(IPC)机制——Messenger。通过实例和源码分析,帮助开发者更好地理解和使用这一高效的通信工具。 ... [详细]
  • 探讨ChatGPT在法律和版权方面的潜在风险及影响,分析其作为内容创造工具的合法性和合规性。 ... [详细]
  • 本题要求在一组数中反复取出两个数相加,并将结果放回数组中,最终求出最小的总加法代价。这是一个经典的哈夫曼编码问题,利用贪心算法可以有效地解决。 ... [详细]
  • 本文将详细探讨 Java 中提供的不可变集合(如 `Collections.unmodifiableXXX`)和同步集合(如 `Collections.synchronizedXXX`)的实现原理及使用方法,帮助开发者更好地理解和应用这些工具。 ... [详细]
  • 深入理解 JMeter 定时器
    本文详细介绍了JMeter中定时器的功能和使用方法,探讨了其在性能测试中的重要性,并结合实际案例解释了如何合理配置定时器以模拟真实的用户行为。文章还涵盖了定时器的执行顺序及其与其他元件的相互作用。 ... [详细]
  • 本文旨在探讨如何利用决策树算法实现对男女性别的分类。通过引入信息熵和信息增益的概念,结合具体的数据集,详细介绍了决策树的构建过程,并展示了其在实际应用中的效果。 ... [详细]
  • 在寻找轻量级Ruby Web框架的过程中,您可能会遇到Sinatra和Ramaze。两者都以简洁、轻便著称,但它们之间存在一些关键区别。本文将探讨这些差异,并提供详细的分析,帮助您做出最佳选择。 ... [详细]
  • 烤鸭|本文_Spring之Bean的生命周期详解
    烤鸭|本文_Spring之Bean的生命周期详解 ... [详细]
  • 本文将指导如何向ReactJS计算器应用添加必要的功能,使其能够响应用户操作并正确计算数学表达式。 ... [详细]
  • 本文探讨了一个特定于 Spring 4.2.5 的问题,即在应用上下文刷新事件(ContextRefreshedEvent)触发时,带有 @Transactional 注解的 Bean 未能正确代理事务。该问题在 Spring 4.1.9 版本中正常运行,但在升级至 4.2.5 后出现异常。 ... [详细]
  • Flowable系列教程:运用ProcessEngineConfigurator实现高级流程引擎配置
    本文探讨了通过ProcessEngineConfigurator接口实现对Flowable流程引擎的高级配置方法。这种方法允许开发者通过自定义配置器来增强或修改流程引擎的行为。 ... [详细]
  • 主调|大侠_重温C++ ... [详细]
  • 本文详细介绍了如何使用 HTML 和 CSS 对文件上传按钮进行样式美化,使用户界面更加友好和美观。 ... [详细]
  • Logback使用小结
    1一定要使用slf4j的jar包,不要使用apachecommons的jar。否则滚动生成文件不生效,不滚动的时候却生效~~importorg.slf ... [详细]
  • Java EE CDI:解决依赖关系冲突的实例
    在本教程中,我们将探讨如何在Java EE的CDI(上下文和依赖注入)框架中有效解决依赖关系的冲突问题。通过学习如何使用限定符,您将能够为应用程序的不同客户端提供多种接口实现,并确保每个客户端都能正确调用其所需的实现。 ... [详细]
author-avatar
wuke85394
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有