我在剑道网格行上定义了一个可拖动的,例如:
$(grid.element).kendoDraggable({
filter: "table > tbody > tr.grid-row.k-master-row",
group: "grid-items",
hint: function (element) {
grid.collapseRow(element);
element.addClass("k-state-selected");
var template = kendo.template($("#grid-item-moving-template").html());
console.log(element);
var data = grid.dataItem(element);
console.log(data);
var hint = $(template(data));
return hint;
},
cursorOffset: { top: 15, left: 30 }
});
我注意到如果我开始拖动项目,第一个项目会正确显示,但是如果我将第一个项目放入放置区并开始拖动第二个项目,则第二个项目的提示模板包含第一个项目的定义。
这就是奇怪的部分出现的地方,我在定义的内部进行了钻取,添加了提示函数 2 个控制台日志,一个传递了元素,另一个是从网格返回的实际数据,使用 dataItem() 获取。虽然元素总是正确的,但如果我开始拖动 1 我得到 1,如果我开始拖动 2 我得到 2,1 和 2 的 dataItem(element) 总是返回第 1 行的行数据(但这只发生在第一个项目已被放入放置区)。知道为什么会发生这种情况吗?这是剑道的内置功能。