簡體   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