简体   繁体   English

在angularjs中在两个控制器之间共享数据

[英]Sharing data between two controllers in angularjs

Inside homeController file I have function 在homeController文件里面我有功能

 $scope.MyFunction = function () {              
                $http({
                    method: 'POST',
                    url: '/SomeUrl/ActionToDo',
                    data: { id: 1001 },
                }).success(function (response) {
                    if (response.Status == 1) {
                        //success  to do                                
                        }
                        $modal.open({
                            controller: 'modalController',
                            templateUrl: '/app/views/modalTemplate.html',
                            resolve: {
                                myData: function () {
                                    return response;
                                }
                            }
                        });
                    } else {
                        alert(error);
                    }
                }).error(function () {
                    alert('Error!');
                });
            }

Where I'm calling modalController to open modal window. 我在哪里调用modalController来打开模态窗口。 Question is how can I pass data to this controller (modalController) from homeController in order to inject currently selected language which is available inside homeController in variable $scope.selLanguage 问题是如何从homeController传递数据到这个控制器(modalController),以便注入当前选择的语言,该语言在变量$scope.selLanguage

You can inject it into controller as resolve dependency: 您可以将其作为解析依赖项注入控制器:

$modal.open({
    controller: 'modalController',
    templateUrl: '/app/views/modalTemplate.html',
    resolve: {
        myData: function () {
            return response;
        },
        language: $scope.selLanguage
    }
});

so it will be available in controller as service 所以它将在控制器中作为服务提供

.controller('modalController', function(myData, language) {
    console.log(language);
})

passed the data as locals to the modal controller using resolve. 使用resolve将数据作为本地传递给模态控制器。

resolve: {
        myData: function () {
            return response;
        },
        modalVar: $scope.selLanguage
    }

In modalController refer that variable as it is local to that modalController controller. 在modalController中引用该变量,因为它是该modalController控制器的本地变量。

angular.module('demo').controller('modalController', function ($scope, $modalInstance, modalVar) {

  $scope.modalVar= modalVar; 
});

Please refer this for more 请参阅此处了解更多信息

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

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