От новичка до гуру: Курсы программирования на CyberDuff

Как получить первую ревизию без кнопки удаления?

<div class="right modal-footer">
        <a class="modal-action waves-effect btn-flat left" ng-switch-when="true" ng-click="delete()">Delete</a>
        <a class="modal-action waves-effect btn-flat" ng-click="close()">Cancel</a>
        <a class="modal-action waves-effect btn-flat" ng-click="save()">Save</a>
    </div>
</div>

У первой версии или версии A не должно быть кнопки удаления. Каждая другая ревизия должна иметь одну, так что это ревизия B, C и т. д. Есть ли у кого-нибудь идеи о том, как я могу это сделать?

Вышеупомянутая часть является нижним колонтитулом диалогового окна сводной версии. Он включает в себя кнопки действий сохранения, отмены и удаления. Кнопка «Удалить» здесь находится в центре внимания.

Ниже приведен код контроллера JavaScript, который сообщает, что делать кнопке. Когда ревизия открыта, она отображает исходные сведения о ревизиях вместе с тем, какая это ревизия. функция закрытия проста, достаточно просто закрыть диалог без сохранения введенной и измененной информации. Функция сохранения также довольно проста, сохраняет введенные данные и показывает изменения при нажатии на кнопку сохранения. Функция «Удалить» удалит текущую ревизию и переместит предыдущую ревизию, поэтому, например, при удалении ревизии C будет отображаться ревизия B. Но я пытаюсь скрыть кнопку удаления в ревизии A (первой ревизии), поэтому он не удалит первоначальную версию и сохранит отображение кнопки удаления для любой другой версии.

Спасибо разработчикам за помощь.

angular.module('Comet').controller('RevisionEditController', function ($scope, $rootScope, $objectExtensions, $odataModel, $validation, $toast, ProposalsService, ErrorsService) {
const DIALOG_SEL = '#revisionEditDialog';
$scope.originalRevision = null;
$scope.revision = null;


/**
 * Opens the dialog.
 * @param {number} proposal - The proposal that the revision is for.
 * @param {object} [revision] - The existing revision to edit. Null when creating a new revision.
 */
$scope.open = function (proposal, revision) {
    $scope.originalRevision = new $odataModel.ProposalDetail(revision);
    $scope.revision = new $odataModel.ProposalDetail(revision);
    $scope.revision.rev = revision ? revision.rev : getNextRevision(proposal.proposalDetails);
    $scope.revision.proposal = {
        id: proposal.id
    };

    $(DIALOG_SEL).modal('open');
};


/**
 * Closes the dialog.
 */
$scope.close = function () {
    $(DIALOG_SEL).modal('close');
};


/**
 * Saves the revision.
 */
$scope.save = function () {
    if ($validation.validate($scope.revisionEditForm)) {
        $rootScope.dataReady = false;

        if ($scope.revision.id) {
            ProposalsService.editProposalDetail($scope.revision.proposal.id, $scope.revision.id, $scope.originalRevision, $scope.revision)
                .then(onSaveSuccess, onSaveFailure);
        } else {
            ProposalsService.addProposalDetail($scope.revision.proposal.id, $scope.revision)
                .then(onSaveSuccess, onSaveFailure);
        }
    }
};


/**
 * Deletes the revision.
 */
$scope.delete = function () {
    ProposalsService.deleteProposalDetail($scope.revision.proposal.id, $scope.revision.id)
        .then(onDeleteSuccess, onDeleteFailure);
};


/**
 * Calls the revision updated callback and closes the dialog.
 * @param {object} updatedRevision - The updated revision.
 */
function onSaveSuccess(updatedRevision) {
    $scope.$ctrl.onRevisionUpdated({ revision: updatedRevision });
    $scope.close();
    $rootScope.dataReady = true;
}


/**
 * Displays an error message and logs the exception.
 * @param {object} ex - The exception to log.
 */
function onSaveFailure(ex) {
    $toast.error('There was an error saving the revision. Please try again.');
    ErrorsService.log(ex);
    $rootScope.dataReady = true;
}


/**
 * Calls the revision deleted callback and closes the dialog.
 * @param {number} id - The ID of the revision that was deleted.
 */
function onDeleteSuccess(id) {
    $scope.$ctrl.onRevisionDeleted({ id: id });
    $scope.close();
    $rootScope.dataReady = true;
}


/**
 * Displays an error message and logs the exception.
 * @param {object} ex - The exception to log.
 */
function onDeleteFailure(ex) {
    $toast.error('There was an error deleting the revision. Please try again.');
    ErrorsService.log(ex);
    $rootScope.dataReady = true;
}


/**
 * Gets the next revision number.
 * @param {object[]} revisions - The previous revisions.
 * @returns {string} The next revision number.
 */
function getNextRevision(revisions) {
    var nextRevision = '';
    var latestRevision = revisions
        .sort(function (a, b) {
            var order = 0;

            if (a.id > b.id)
                order = -1;
            else if (a.id < b.id)
                order = 1;

            return order;
        })[0];

    if (latestRevision) {
        nextRevision = latestRevision.rev ? '' : 'A';
        var increment = true;

        for (var idx = latestRevision.rev.length - 1; idx >= 0 && increment; idx--) {
            var currLetter = latestRevision.rev[idx].charCodeAt(0);

            if (currLetter == 90) {
                nextRevision = nextRevision + 'A';
            } else {
                increment = false;
                nextRevision = String.fromCharCode(currLetter + 1) + nextRevision;
            }
        }

        if (nextRevision.length < latestRevision.rev.length) {
            nextRevision = latestRevision.substring(0, nextRevision.length - 1) + nextRevision;
        }
    }

    return nextRevision;
}

Ответы:


1

Я предполагаю, что существует цикл, в котором вы повторяете ревизии, используйте индекс цикла, чтобы проверить с помощью ngIf, должна ли отображаться кнопка.

02.02.2018
Новые материалы

ИИ меняет этику в руководстве
Связь искусственного интеллекта, лидерства и этики Сострадание, глубокое понимание чужих страданий в сочетании с желанием облегчить их, возвышается как неотъемлемая человеческая добродетель...

Представляем Narwhal Technologies (Nrwl)
6 декабря 2016 г. Маунтин-Вью, Калифорния С тех пор, как Виктор Савкин и я (Джефф Кросс) присоединились к команде Angular в Google на заре Angular 1, Angular продемонстрировал феноменальный..

Путь AWS  — «Изучение машинного обучения — 10 начинающих ИИ и машинного обучения на AWS».
Универсальный ресурсный центр для изучения искусственного интеллекта и машинного обучения. НОЛЬ или ГЕРОЙ, начните свое путешествие здесь. Получите решения и пройдите обучение у экспертов AWS...

5 простых концепций Python, ставших сложными
#заранее извините 1) Переменные x = 4 y = 5 Переменная в Python — это символическое представление объекта. После присвоения некоторого объекта переменной Python мы приобретаем..

«Освоение вероятности: изучение совместной, предельной, условной вероятности и теоремы Байеса —…
Виды вероятности: Совместная вероятность Предельная вероятность Условная вероятность Диаграмма Венна в вероятностях: В “Set Theory” мы создаем диаграмму Венна...

Основы Spring: Bean-компоненты, контейнер и внедрение зависимостей
Как лего может помочь нашему пониманию Когда мы начинаем использовать Spring, нам бросают много терминов, и может быть трудно понять, что они все означают. Итак, мы разберем основы и будем..

Отслеживание состояния с течением времени с дифференцированием снимков
Время от времени что-то происходит и революционизирует часть моего рабочего процесса разработки. Что-то более забавное вместо типичного утомительного и утомительного процесса разработки. В..