我正在为我的页面使用 Knockout.js。我的 ViewModel 包含一个对象数组。每个对象都包含一个子数组。更一般地说,这应该表示一个包含列和列内容的表。
首先我正在处理 foreach:itemArray 以获取列。然后我使用嵌套的 foreach:childs,其中 childs 是列内容的数组。
我的孩子应该可以在列之间拖动。因此我用我找到的 js 替换了嵌套的 foreach
https://github.com/rniemeyer/knockout-sortable
http://jsfiddle.net/rniemeyer/Jr2rE/
再次使用代码 - 第一阶段:
<div id="lanesContainer" data-bind="foreach: lanes">
然后遵循嵌套的foreach(在#lanesContainer 内)
<ul data-bind="sortable: { template: 'laneTemplate', data: childs, afterMove: $root.dropCallback }">
我的项目现在是可拖动的,但是以某种方式放置失败了。我的调试器在 js 的以下部分中断:
//take destroyed items into consideration
if (!templateOptions.includeDestroyed) {
targetUnwrapped = targetParent();
for (i = 0; i < targetIndex; i++) {
//add one for every destroyed item we find before the targetIndex in the target array
if (targetUnwrapped[i] && targetUnwrapped[i]._destroy) {
targetIndex++;
}
}
}
它在第三行中断,因为 targetParent 是一个对象,而不是一个函数。我该如何解决问题?