我試圖實現與利用代理事件RactiveJS一個簡單的可拖動DIV(上鼠標按下,向上移動,出來)RactiveJS拖動利用的MouseEvent
繼JSFiddle作品就好了,但是當用戶移動鼠標太快拖動停止。這很簡單,因爲我的情況下的mouseevent處理程序位於DIV標籤上,而不是正文或文檔元素。我的最終想法是創建一個滑塊組件,但是我正在尋求提供最好的用戶體驗,並使其更像JQuery的可拖動。
模板:
<div class="rect {{drag ? 'dragging' : ''}}"
on-mousedown="startDrag"
on-mouseup="stopDrag"
on-mouseout="stopDrag"
on-mousemove="drag"
style="top:{{top}}px; left:{{left}}px;">
</div>
Ractive例如:
var ractive = new Ractive({
el: "#content",
template: "#template",
data: {left:20,top:80}
});
ractive.on({
startDrag : function (event) {
this.set({
'drag': true,
'mouseX': event.original.clientX - this.get('left'),
'mouseY': event.original.clientY - this.get('top')
});
},
stopDrag : function (event) {
this.set('drag', false);
},
drag : function (event) {
if(this.get('drag')) {
var x = event.original.clientX,
y = event.original.clientY;
this.set({
top: y - this.get('mouseY') ,
left: x - this.get('mouseX')
});
event.original.stopPropagation();
}
}
})
如何改善上面的代碼?
謝謝馬蒂!這非常有幫助。也許我們應該把它添加到Ractive的網站裝飾器部分作爲裝飾器有用的另一個例子 – 2014-09-26 07:28:00
修復了小提琴:http://jsfiddle.net/h9j2hdyj/7/ – ceremcem 2018-02-13 01:56:46