Директива Vue (Vue.js 2.x) для обработки элемента перетаскивания.
npm install draggable-vue-directive --save Вы можете просмотреть живую демонстрацию здесь: https://israelzablianov.github.io/draggable-demo
< div v-draggable >
classic draggable
</ div > .vue file:
import { Draggable } from 'draggable-vue-directive'
...
export default {
directives : {
Draggable ,
} ,
... < div v-draggable =" draggableValue " >
< div :ref =" handleId " >
< img src =" ../assets/move.svg " alt =" move " >
</ div >
drag and drop using handler
</ div > .vue file:
import { Draggable } from 'draggable-vue-directive'
...
export default {
directives : {
Draggable ,
} ,
data ( ) {
return {
handleId : "handle-id" ,
draggableValue : {
handle : undefined
}
} ;
} ,
mounted ( ) {
this . draggableValue . handle = this . $refs [ this . handleId ] ;
}
...draggable значение Объект передается в директиву, называется значением директивы.
Например, в v-draggable="draggableValue" draggableValue может быть объектом, содержащим поля фолога:
handleonPositionChangeonDragEndonDragStartresetInitialPosinitialPositionstopDraggingboundingRectboundingElementboundingRectMargin Тип: HtmlElement | Vue
Требуется: false
Есть два способа использовать draggable Directive, как показано в демонстрации выше.
Тип: Function
Требуется: false
Иногда вам нужно знать координаты элемента, пока его перетаскивают.
Передача обратного вызова в draggableValue достигнет этой цели; Во время перетаскивания элемента обратный вызов будет выполнен с помощью 3 параметров:
positionDiffabsolutePosition (текущая позиция; в первый раз, когда директива добавляется в DOM или инициализируется, значение будет undefined , если только элемент не имеет left и top значений)event (объект события) import { Draggable } from 'draggable-vue-directive'
...
export default {
directives : {
Draggable ,
} ,
data ( ) {
return {
draggableValue : {
onPositionChange : this . onPosChanged
}
} ;
} ,
methods : {
onPosChanged : function ( positionDiff , absolutePosition , event ) {
console . log ( "left corner" , absolutePosition . left ) ;
console . log ( "top corner" , absolutePosition . top ) ;
}
}
. . . Тип: Function
Требуется: false
Излучает только при перетаскивании концов. Имеет такую же функциональность, что и onPositionChange .
Тип: Function
Требуется: false
Излучает только при запуске. Имеет такую же функциональность, что и onPositionChange .
Тип: Boolean
Требуется: false
по умолчанию: undefined
Возвращается в начальное положение элемента, прежде чем он будет установлен.
Тип: Position
Требуется: false
по умолчанию: undefined
Устанавливает абсолютную начальную позицию этого элемента.
Будет применен, когда resetInitialPos true .
Тип: Boolean
Требуется: false
по умолчанию: undefined
Немедленно перестаньте перетаскиваться.
Тип: ClientRect
Требуется: false
по умолчанию: undefined
Ограничивает перетаскивание в пределах границ прямоугольника.
Тип: HtmlElement
Требуется: false
по умолчанию: undefined
Ограничивает перетаскивание в пределах границ элемента.
Тип: MarginOptions
Требуется: false
по умолчанию: undefined
При использовании boundingRect или boundingElement вы можете передавать объект с top , left , bottom и right свойствами, чтобы определить маржу между элементами и границами.