我试图找出,如何在Dragular Service(http://luckylooke.github.io/dragular/#/home)中设置选项以获得所需的行为:
我们假设我们有两个容器containerLeft
和containerRight
。
我们希望能够将复制的项目仅从containerLeft
拖放到containerRight
。示例:当我们将项left 1
移至containerRight
时,它应该显示在containerLeft
和containerRight
中。这很好。好的,我们希望有更多功能 - 从containerRight
删除项目。在我的控制器代码下面:
function TestController(dragularService, $element, $scope) {
$scope.left = [
{content: 'left 1'},
{content: 'left 2'},
{content: 'left 3'}
];
$scope.right = [
{content: 'right 1'},
{content: 'right 2'},
{content: 'right 3'}
];
var containerLeft = document.querySelector("#containerLeft");
var containerRight = document.querySelector("#containerRight");
//remove items from containerRight dosent work properly
dragularService([containerRight], {
removeOnSpill: true
});
dragularService([containerLeft, containerRight], {
containersModel: [$scope.left, $scope.right],
copy: true,
//move only from left to right
accepts: function (el, target, source, sibling) {
if (source === containerRight && target === containerLeft) {
return false;
} else {
return true;
}
}
});
}
并查看:
<div class="row" ng-controller="TestController">
<div class="column small-6">
<div id="containerLeft" style="">
<div ng-repeat="item in left">{{item.content}}</div>
</div>
<div id="containerRight" style="">
<div ng-repeat="item in right">{{item.content}}</div>
</div>
</div>
<div class="column small-6">
<pre>
left: {{ left | json}}
</pre>
<pre>
right: {{ right | json}}
</pre>
</div>
</div>
当我从containerRight
移除项目时,它们会从视图中消失,但它们仍在right
数组中(如果我从左向右拖放某些内容,则会再次显示已删除的早期项目)。此外,当我更改containerRight
中的项目顺序时,它对right
数组没有影响 - 订购的项目不会更改。如何设置options
对象以使其正常工作?
答案 0 :(得分:3)
是的,设置是正确的,实际上是它的错误..我提出了问题on project github page,我很快就会解决它;)
编辑:好的,设置不正确,但也有一个错误,我在dev分支中修复了它,将在下一个版本中合并。
这是正确的设置:
function TestController(dragularService, $element, $scope) {
$scope.left = [{
content: 'left 1'
}, {
content: 'left 2'
}, {
content: 'left 3'
}];
$scope.right = [{
content: 'right 1'
}, {
content: 'right 2'
}, {
content: 'right 3'
}];
var containerLeft = document.querySelector("#containerLeft");
var containerRight = document.querySelector("#containerRight");
//remove items from containerRight dosent work properly
dragularService([containerRight], {
containersModel: [$scope.right],
removeOnSpill: true,
nameSpace: 'sameSpace'
});
dragularService([containerLeft], {
containersModel: [$scope.left],
copy: true,
//move only from left to right
accepts: function(el, target, source, sibling) {
if (source === containerRight && target === containerLeft) {
return false;
} else {
return true;
}
},
nameSpace: 'sameSpace'
});
}
说明: 你不能多次在同一个容器上调用dragularService,如果你想要容器的不同选项,你必须分别调用它们的dragularService,然后通过nameSpace连接它们。