Ren*_*Ren 10 jquery jquery-ui angularjs angular-ui
这是一个Plunker示例.[根据以下答案更新了plunk]
如何禁用一两个项目的排序.例如,第1项和第3项,那么用户无法移动这两项?
我试过了
$scope.sortableOptions = {
disabled:true,
};
Run Code Online (Sandbox Code Playgroud)
在sortableOptions中,但禁用整个列表上的排序.
我正在寻找类似的东西
<div ui-sortable="sortableOptions" ng-model="list">
<div ng-repeat="item in list">
<div ng-switch on="item.text">
<div ng-switch-when="Item 1" >
<div ui-sortable="sortableOptions.disabled=true">{{item.text}} - Sorting disabled</div>
</div>
<div ng-switch-default>
<div>{{item.text}} - Sorting enabled</div>
</div>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
谢谢.
j.w*_*wer 16
您可以为不应拖动的项目配置类:
$scope.sortableOptions = {
cancel: ".unsortable",
Run Code Online (Sandbox Code Playgroud)
然后有条件地将该类添加到ngRepeat:
<ul ui-sortable="sortableOptions" ng-model="list" class="list">
<li ng-repeat="item in list" class="item"
ng-class="{'unsortable': item.text == 'Item 2'}">
{{item.text}}
Run Code Online (Sandbox Code Playgroud)
更新
您可以防止物品被分拣像这样:
$scope.sortableOptions = {
cancel: ".unsortable",
items: "li:not(.unsortable)",
Run Code Online (Sandbox Code Playgroud)
您是否尝试过实施更新选项?
根据 ui-sortable 文档,针对您的用例进行了修改和过度简化的版本:
首先,向数组添加一个启用的属性:
for (var i = 1; i <= 6; i++){
tmpList.push({
text: 'Item ' + i,
value: i,
enabled: true
});
}
Run Code Online (Sandbox Code Playgroud)
然后在 sortableOptions 中断言它的状态:
$scope.sortableOptions = {
update: function(e, ui) {
if (ui.item.scope().item.enabled === false) {
ui.item.sortable.cancel();
}}};
Run Code Online (Sandbox Code Playgroud)
https://github.com/angular-ui/ui-sortable