如何获得$ modalInstance?

时间:2015-01-27 15:37:38

标签: angularjs angular-ui-bootstrap

我想在普通视图和模态(ui.bootstrap)中使用相同的控制器来添加和编辑项目。

在那个控制器中,我注入了项目数据(如果它已经添加,那么它是空的):

function itemCtrl($scope, itemData) {
    $scope.afterSumbit = function() {
        //If it's opened in modal I have to pass new item values to modal opener
        //but I don't have $modalInstance
    }
}

问题是当我在模态中打开ctrl时我必须解析模态,但我没有$modalInstance,因为它没有被注入。 我无法将$modalInstance作为依赖项添加到控制器中,因为在正常视图中我没有使用它。

我知道控制器是否是模态打开的,但是如何注入$modalInstance

如何解决此问题?

1 个答案:

答案 0 :(得分:0)

尝试将模态窗口的范围设置为当前范围,如

app.controller(......
var modalInstance = null;
$scope.openModal = function (size) {
modalInstance = $modal.open({
            templateUrl: 'myModal.html',
            size: size,
            windowClass: 'medium-size-modal',
            scope: $scope
        });
        return modalInstance;
    };

稍后您可以使用您创建的实例

将其从dismiss / cancel / ok方法中删除
$scope.cancel = function () {
        if (modalInstance) {
            modalInstance.dismiss('cancel');
        }
    };