繁体   English   中英

如何将数据从模态内部控制器传递到AngularJs中的外部控制器

[英]How to pass data from inner controller of modal to outer controller in AngularJs

我试图在AngularJS中的模态内操作数据,然后在模态外查看数据。 因此,我必须将数据从内部控制器(由模态使用)传递到外部控制器。 为了将数据从外部控制器放到内部控制器中,我借助$modal.open的选项resolve做到了这$modal.open

myApp.controller('MyCtrl', function ($scope, $modal) {

$scope.number = 1;

$scope.openModal = function () {
    $modal.open({
        templateUrl: 'myModalContent.html',
        backdrop: true,
        windowClass: 'modal',
        controller: function ($scope, $modalInstance, number) {
            $scope.number = number;
            $scope.submit = function () {

                //How to iterate var number in the outer controller?
                //$scope.number++;

                $modalInstance.dismiss('cancel');
            }
        },
        resolve: {
            number: function () {
                return $scope.number;
            }
        }
    });
   };
});

现在,我想在模态中向上计数并在模态之外显示它。 $scope.number显然只影响当前控制器中的数字,那么如何设置外部控制器的变量?

这是我的小提琴

您的帮助将不胜感激。

尝试_scope = $ scope; 保持对外部控制器的引用。 在内部控制器中,使用_scope.number ++; 工作提琴:

"http://jsfiddle.net/5xop3wL9/5/"

我会将您的数据保存到服务,以便可以在控制器之间传递。

myApp.factory('modalDataService', function () {
    var modalData = {}; 
    return {
        getData: function () {
            return modalData;
        },
        setData: function (newModalData) {
            modalData = newModalData;
        },
        resetData: function () {
            modalData = {};
        }
    };
});

然后,您可以通过传入工厂作为依赖项并调用如下函数来从控制器访问数据:

modalDataService.getData();
modalDataService.setData(newModalData);
modalDataService.resetData();

您可以向外部控制器的$scope添加一个引用,然后使用新的引用增加number

...
$scope.number = 1;
$higherScope = $scope;
...
//Inside submit
$scope.submit = function () {

                    //How to iterate var number in the outer controller?
                    $higherScope.number++;

                    $modalInstance.dismiss('cancel');
                }

更新小提琴

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM