我有一个小问题要解决。
我有模态控制器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。我可以console.log的原因,但我不能让它显示在这个HTML。有什么帮助吗?
答案 0 :(得分:1)
我们错过了一些背景信息,但我相信这是你的问题:
self.reject = function ($rootScope) {
$modalInstance.close(self.reason);
console.log(self.reason);
};
$rootScope.reasono = self.reason;
假设self.reason
绑定到模态中的输入,它将不会在reject
回调之外定义 - 这是异步的本质。您可以登录到控制台,因为您在回调中这样做了。
在回调中定义$rootScope.reasono
,如下所示:
self.reject = function () {
$modalInstance.close(self.reason);
console.log(self.reason);
$rootScope.reasono = self.reason;
};
已编辑以显示$rootScope
应作为reject
函数定义中的命名参数删除。
答案 1 :(得分:-1)
不建议使用根作用域。出于这个原因,建议使用变量创建一个用于存储拒绝原因的通信服务,然后为每个控制器注入此服务 - 这样您就可以从不同的控制器读取/写入原因。