Как условно предотвратить сброс элемента с помощью ui-sortable в AngularJs между двумя списками? - PullRequest
0 голосов
/ 08 мая 2020

У меня есть два списка, связанных с ui-sortable. Моя проблема: если элемент правого списка (rightModel) имеет класс «sorted-list - unsortable», я хочу предотвратить выпадение в левом списке, но продолжать опускаться в исходном списке. Я пробовал с ui.sender.sortable, но появляется следующее:

TypeError: ui.sender is null

И я действительно не понимаю, как это сделать. Это страница html с двумя списками:

<div class="sortable-dual-list">

    <div class="row">
        <div class="col-lg-6">
            <h4 class="text-left">{{ $ctrl.leftTitle | translate}}</h4>
            <div class="grid-container grid-container-edit">
                <div class="p-grid-row connector sortable-list" ui-sortable="$ctrl.sortableOptions" ng-model="$ctrl.leftModel" >
                    <div ng-repeat="company in $ctrl.leftModel">
                        <p>{{company.businessName}}</p>
                    </div>
                </div>
            </div>
        </div>
        <div class="col-lg-6">
            <h4 class="text-left">{{ $ctrl.rightTitle | translate}} <label ng-if="$ctrl.required"  class="mandatory">&nbsp;(*)</label>
            </h4>

            <div class="grid-container grid-container-edit">
                <div class="p-grid-row connector sorted-list" ui-sortable="$ctrl.sortableOptions" ng-model="$ctrl.rightModel">

                    <div class="p-row" ng-class="{'sorted-list--unsortable': company.industryValue === 'ACTIVE'}" ng-repeat="company in $ctrl.rightModel">

                        <p>{{company.businessName}} <span ng-if="$first">
                            (default)
                        </span></p>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

И это варианты сортировки:

    public sortableOptions = {
        connectWith: '.connector',
        disabled: false,
        stop: function(ev, ui) {
            if(ui.item.hasClass("sorted-list--unsortable")){
                ui.sender.sortable('cancel');
            }
        },
    };

1 Ответ

0 голосов
/ 09 мая 2020

Нашел решение:

    public sortableOptions = {
      connectWith: '.connector',
      disabled: false,
      cancel: '.sorted-list--unsortable'
      update: function (event, ui) {
        if (!ui.item.sortable.received &&
            ui.item.sortable.source[0] !== ui.item.sortable.droptarget[0] &&
            ui.item.hasClass('sorted-list--unsortable')) {
            ui.item.sortable.cancel();
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...