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

时间:2015-06-29 11:36:02

标签: javascript jquery angularjs

在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!');
                });
            }

我正在调用modalController来打开模态窗口。问题是我如何从homeController传递数据到这个控制器(modalController),以便注入当前选择的语言,该语言在变量$scope.selLanguage

中的homeController中可用

2 个答案:

答案 0 :(得分:1)

您可以将其作为解析依赖项注入控制器:

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

因此它将在控制器中作为服务提供

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

答案 1 :(得分:0)

使用resolve将数据作为本地传递给模态控制器。

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

在modalController中引用该变量,因为它是该modalController控制器的本地变量。

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

  $scope.modalVar= modalVar; 
});

请参阅this 了解更多