Angular - Как показать причину модального отклонения в таблице?

0

У меня есть небольшая проблема для решения.

У меня модальный контроллер rejectIssueModalCtrl.js

(function () {
'use strict';

function rejectIssueModalCtrl($modalInstance, issue, $rootScope) {
    var self = this;
    self.cancel = function () {
        $modalInstance.dismiss('cancel');
    };

    self.reject = function ($rootScope) {
        $modalInstance.close(self.reason);
        console.log(self.reason);
    };
    $rootScope.reasono = self.reason;                
}

rejectIssueModalCtrl.$inject = ['$modalInstance', 'issue', '$rootScope'];

angular
    .module('app')
    .controller('rejectIssueModalCtrl', rejectIssueModalCtrl);
})();

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

Здесь мой код из другого контроллера issueDetailsCtrl.js

        $scope.reasonoo = $rootScope.reasono;

    function rejectIssue() {
        var rejectModal = $modal.open({
            templateUrl: '/App/Issue/rejectIssueModal',
            controller: 'rejectIssueModalCtrl',
            controllerAs: 'rejectModal',
            size: 'lg',
            resolve: {
                issue: self.issueData
            }
        });
        rejectModal.result.then(function (reason) {
            issueSvc
                .rejectIssue(self.issueData.id, reason)
                .then(function (issueStatus) {
                    changeIssueStatus(issueStatus.code);
                    getIssue();
                }, requestFailed);
        });
    };

и html-код

<div>
<span class="right" ng-bind="$root.reasono"></span>
</div>

Как вы можете видеть, я пытался использовать $ rootScope. Я могу исключить эту причину, но я не могу показать ее в этом html. Любая помощь?

  • 0
    у вас есть консольный журнал $ rootScope.reasono, также вы можете создать плункер
Теги:
bootstrap-modal
angularjs-scope

2 ответа

1
Лучший ответ

Нам не хватает какого-то контекста, но я считаю, что это ваша проблема:

self.reject = function ($rootScope) {
    $modalInstance.close(self.reason);
    console.log(self.reason);
};
$rootScope.reasono = self.reason;  

Предполагая, что self.reason привязан к входу в вашем модальном self.reason, он не будет определен за пределами обратного вызова reject - что характер async. Вы можете войти в консоль, потому что вы делаете это в обратном вызове.

Определите $rootScope.reasono внутри обратного вызова так:

self.reject = function () {
    $modalInstance.close(self.reason);
    console.log(self.reason);
    $rootScope.reasono = self.reason;  
};

Отредактировано, чтобы показать, что $rootScope следует удалить как именованный параметр в определении функции reject.

  • 0
    Я пытался это сделать, но у меня есть ошибка TypeError: Невозможно установить свойство 'reasono' из неопределенного в этой строке, которую вы добавляете
  • 0
    Вы не должны добавлять $ rootScope в качестве именованного параметра в определение функции отклонения. Удалите это, и это должно работать.
Показать ещё 6 комментариев
-1

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню