【发布时间】:2014-07-25 21:55:52
【问题描述】:
我有一个淘汰赛 js 视图模型中的照片列表,我希望能够在它们之间交换(实际上更正确的术语是在另一个之上复制一个)。 这是我的简化视图模型:
define(['durandal/app', 'knockout', 'jquery'], function(app, ko, jquery) {
var miscPhotos = ko.observableArray();
var draggedPhoto = ko.observable();
function handleDragStart(data, e) {
// e.preventDefault();
draggedPhoto(data);
console.log('dragStart');
return true;
}
function handleDragOver(e) {
e.preventDefault();
console.log('dragOver');
}
function handleDrop(e) {
e.preventDefault();
e.stopPropagation();
console.log('drop');
}
return {
miscPhotos: miscPhotos,
handleDrop: handleDrop,
handleDragOver: handleDragOver,
handleDragStart: handleDragStart
}
});
还有简化的用户界面:
<div id="holder" data-bind="foreach: miscPhotos">
<div class="pull-left well well-small" draggable="true"
data-bind="event:{
dragstart: function(data, e){ $root.handleDragStart($data, e);},
dragover:function(data, e){ $root.handleDragOver( e);},
drop:function(data, e){ $root.handleDrop(e, $data);}}
">
<div class="thumb">
<img class="thumb"
title="" style="display: block"
data-bind="attr: {src: 'data:image;base64,' + PhotoData()}"
/>
</div>
</div>
当我尝试将一张照片复制到另一张照片上时,只会触发 dragstart 事件,不会触发 dragover 和 drop。
【问题讨论】:
-
您是否尝试过在handleDragOver 和handleDrop 中添加'return true'?
标签: html knockout.js durandal-2.0