Angular - 如何在表格中显示模态拒绝原因?

时间:2015-12-04 06:58:36

标签: angularjs angularjs-scope bootstrap-modal

我有一个小问题要解决。

我有模态控制器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。有什么帮助吗?

2 个答案:

答案 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)

不建议使用根作用域。出于这个原因,建议使用变量创建一个用于存储拒绝原因的通信服务,然后为每个控制器注入此服务 - 这样您就可以从不同的控制器读取/写入原因。