【发布时间】:2014-02-05 06:54:57
【问题描述】:
在 Angular 中,我有多个包含块的列。使用 ngRepeat 重复列,并且重复列内的块。使用 Angular-UI 和 jQueryUI,我使块可排序并连接所有列。这很好用,我可以在列之间拖动块,但只有当我将一个块拖到非空列的末尾时,最后一个(新的)块才不会显示。但是,如果您在控制台中记录底层数组,您可以看到该数组已更新为 blockmove。其他手表仍然被调用并显示正确的值(如小提琴所示)
HTML:
<div ng-app="foo" ng-controller="bar">
<div ng-repeat="column in columns" id="column-{{$index}}" class="column">
<div class="blocks-wrapper" ui-sortable="columnSortableConfig" ng-model="column.blocks">
<div ng-repeat="block in column.blocks" class="block" id="block-{{block.id}}">
{{block.id}}
</div>
</div>
</div>
{{columns}}
</div>
Javascript:
foo = angular.module('foo', ['ui.sortable']);
foo.controller('bar', function($scope){
$scope.columns = [{blocks: [{id: 1},{id: 2}]},{blocks: [{id: 3}]}];
$scope.columnSortableConfig = {
connectWith: '.blocks-wrapper',
placeholder: 'block-placeholder',
forcePlaceholderSize: true,
tolerance: 'pointer',
};
});
我在网上四处搜索,将数组中的项目设为非原始 (link) 并将 jQuery 的回调包装在 scope.$apply() (link) 中,但这一切都不起作用。
JSFiddle:http://jsfiddle.net/C5pKc/10/ (要重现,请将块 3 拖到块 2 下)
【问题讨论】:
-
顺便说一句,Github 不希望我们热链接原始源文件,所以你的小提琴被破坏了。更改您的脚本包括 ui-sortable 以使用此 URL:rawgithub.com/angular-ui/ui-sortable/master/src/sortable.js
-
谢谢。我编辑了小提琴
标签: jquery-ui angularjs jquery-ui-sortable