角度拖放列表 - 访问嵌套的ng-repeat

时间:2015-12-31 21:47:45

标签: angularjs angularjs-ng-repeat

我在我的项目中使用Angular Drag and Drop Lists取得了巨大的成功,但是我有一个更复杂的用例,基本上能够访问嵌套的ng-repeat数组。虽然存在this nested demo,但它处理不同的用例。

基本上我总结了以下结构以便于阅读:

<div ng-repeat="imgArray in document.images">
    <div ng-if="doc._id === imgArray.document_template_id">
        <ul dnd-list="placedList">
            <li ng-repeat="img in imgArray.files" dnd-draggable="img" dnd-moved="img.splice($index, 1)">
                <!-- Display -->
            </li> 
        </ul>
    </div>
</div>

但是当拖动完成并调用dnd-moved="img.splice($index, 1)"时会抛出错误:TypeError: Cannot read property 'splice' of undefined

我也尝试使用dnd-moved="imgArray.files.splice($index, 1)",它会抛出相同的错误。不同之处在于,如果我使用img.splice拖动列表中的现有元素,元素将会消失。没有被移动,只是删除并抛出TypeError,当我使用imgArray.files元素不会消失或重新排序时,只抛出TypeError。

我确实需要创建嵌套的ng-repeat,因为ng-if是该过程绝对重要的一部分。

有关如何使.splice()按预期工作的任何建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

这实际上会直接起作用,因为复制粘贴疏忽造成上述内容的问题。

该行:

<ul dnd-list="placedList">

需要:

<ul dnd-list="imgArray.files">

只是这种改变会使嵌套的ng-repeats工作。