AngularJs模态传递值

时间:2015-01-10 16:54:07

标签: angularjs angular-ui

我试图将值传递给弹出控制器,但只是在我插入这个" havePermissions"在控制器中但是给出了这个错误https://docs.angularjs.org/error/ $ injector / unpr?p0 = havePermissionsProvider(未知提供者:havePermissionsProvider)

如果我删除了这个" havePermissions,我没有错误,但是没有将值传递给模态控制器(未定义值)

模态打开

$scope.open = function (size) {
        var modalScope = $rootScope.$new();
        modalScope.modalInstance = $modal.open({
            templateUrl: 'Views/Common/participants.html',
            controller: 'ModalInstanceCtrlPartic',
            size: size,
            scope: modalScope,
            resolve: {
                havePermissions: function () {
                    return $scope.havePermissions;
                }
            }
        });
        modalScope.modalInstance.result.then(function () {
        });
    };

模态控制器

angular.module("participants.controller", ['ui.bootstrap'])
    .controller("ModalInstanceCtrlPartic", ["$scope", "$http", "$location", 
"$routeParams", "UserService","havePermissions","logger",
            function ($scope, $http, $location, $routeParams, UserService, 
havePermissions,logger) {

            var page = $location.path().split('/')[1];
            $scope.havePermissions = havePermissions;

            $scope.ID_Event = page == "events" ? $routeParams.eventId : null;
            $scope.ID_UserGroup = page == "groups" ? $routeParams.groupId : null;
            $scope.page = page;

            $scope.model = {};

            UserService.GetParticipants($routeParams.groupId, $routeParams.eventId).then(function (response) {
                $scope.model = response.data;
            }, function (e) {
                logger.logError("Ocorreu um erro, tente novamente.!");
            });

            $scope.emailList = [];

            $scope.ok = function (list) {
                //envia email
                $scope.modalInstance.close('');
            };

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

        }]);

1 个答案:

答案 0 :(得分:0)

$modal.open方法不应该进入新创建的范围。 保持var modalInstance = $ modal.open({// init code})

模态代码将如下更改。

$scope.open = function (size) {
        var modalScope = $rootScope.$new();
        var modalInstance = $modal.open({
            templateUrl: 'Views/Common/participants.html',
            controller: 'ModalInstanceCtrlPartic',
            size: size,
            scope: modalScope ,
            resolve: {
                havePermissions: function () {
                    return $scope.havePermissions;
                }
            }
        });
        modalInstance.result.then(function () {
        });
    };

此更新 plunkr 不完全相同。

希望这对你有所帮助。