angular ui bootstrap - 如何在不创建控制器的情况下访问模态范围

时间:2015-06-29 13:22:27

标签: angularjs angular-ui-bootstrap

$modal服务的docs

  

与模态内容相关的范围增加了两种方法:

     

- $close(result)

     

- $dismiss(reason)

     

这些方法可以轻松关闭模态窗口,而无需创建专用控制器。

我想知道如何在不创建专用控制器的情况下访问此范围。

2 个答案:

答案 0 :(得分:0)

试试这个:

$scope.openModal=function(){
  $scope.modalInstance=$modal.open({
    templateUrl: 'xyz.html',
    scope:$scope
  });
}

$scope.close=function(){
  $scope.modalInstance.dismiss();
};

现在您可以在temnplate文件中使用ng-click="close()"

答案 1 :(得分:0)

ı使用此代码。

module.service('ModalService', function ($modal) {
    var modalOptions = {
        backdrop: true,
        keyboard: true,
        modalFade: true,
        templateUrl: null
    };

    this.show = function (customModalDefaults) {
        var tempModalOptions = {};
        angular.extend(tempModalOptions, modalOptions, customModalDefaults);

        if (!tempModalOptions.controller) {
            tempModalOptions.controller = function ($scope, $modalInstance) {
                $scope.modalOptions.ok = function (result) {
                    $modalInstance.close(result);
                };
                $scope.modalOptions.close = function (result) {
                    $modalInstance.dismiss('cancel');
                };
            };
        }

        return $modal.open(tempModalOptions).result;
    };
});

呼叫:

                    var modalOptions = {
                        backdrop: true,
                        modal: true,
                        size: scope.options.size || 'lg',
                        templateUrl: '/Apps/inekle/views/common/include_modal.html?v=1',
                        controller: [
                            "$scope", "$modalInstance", function ($scope, $modalInstance) {
                                $scope.model = {
                                    template: scope.options.template,
                                    title: scope.options.title
                                };

                                $scope.close = function () {
                                    $modalInstance.dismiss('close');
                                };
                            }
                        ]
                    };

                    ModalService.show(this.options).then(function (model) {},function (error) { });