5
angular
.module('angProj')
.controller('UserCtrl',
    ['$scope', '$uibModal',
        function ($scope, $uibModal) {

            $scope.results = function (content, completed) {
                var modalInstance = $uibModal.open({
                        backdrop: 'static',
                        keyboard: false,
                        animation: $scope.animationsEnabled,
                        templateUrl: '/Scripts/angularApp/views/user-modal.html',
                        controller: 'UserModalCtrl',
                        resolve: {
                            items: function () {
                                return $scope.items;
                            }
                        }
                    });

                if (!completed || content.length === 0) {
                    return;
                }

        modalInstance.close();
        modalInstance.dismiss('cancel');

我无法在用户添加完成时关闭模型。在用户模式上,我正在显示进度条。代码运行良好,没有错误,但模式保持打开状态。我也尝试了 $uibModalInstance 但控制器抛出错误:未知提供者(无法在同一个 UserCtrl 上注入 $uibModalInstance) 我正在注入 ui.bootstrap (ui-bootstrap-tpls-1.1.2.js)

谢谢你的时间。

4

2 回答 2

5

modalInstance.close()UserModalCtrl控制器内部使用

app.controller('UserModalCtrl', ['$scope', '$modalInstance' function($scope ,modalInstance {
  $scope.close = function () {
   modalInstance.close();
  };
}]);
于 2016-02-03T12:49:57.543 回答
0

我认为我做过类似的事情。

我有一个$modal看起来像这样的控制器

angular.module('myApp').controller('infoCtrl', function ($scope, $uibModalInstance, loading) {

  $scope.editable = loading;

  $scope.$watch('editable.status', function(newValue, oldValue) {
    if (newValue == 'success'){
        // close modal
        $uibModalInstance.close('ok');
    } else if (newValue == 'error') {
        // show error message
    } 
  });
});

注入loading的是一个看起来像这样的服务

myApp.factory('loading', function() {
  return {
    status: ''
  }
});

当我将加载服务的状态更改为“成功”(从任何地方,而不是模态控制器)时,模态将关闭。

我不知道这是否正是您所要求的,但我希望它有所帮助,另外,请问是否有不清楚的地方!

编辑:假设您有一个带有 value 的服务isCompleted: false,将该服务注入您的模态控制器,并使用该$watch功能,然后当它isCompleted更改为时true,您关闭模态。

于 2016-02-03T12:57:47.423 回答