У меня есть небольшая проблема для решения.
У меня модальный контроллер 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. Любая помощь?
Нам не хватает какого-то контекста, но я считаю, что это ваша проблема:
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
.
Использование корневой области не рекомендуется. По этой причине рекомендуется создать службу для intercommuncation с переменной для хранения причины отклонения, а затем ввести эту услугу для каждого контроллера - таким образом вы сможете читать/записывать причину с разных контроллеров.