从一个控制器获取$ scope到模态控制器

时间:2014-12-09 20:57:46

标签: javascript angularjs angularjs-scope bootstrap-modal

我有一个使用ctrlone的页面,我想将整个$ scope变量复制到ctrltwo这是一个模态窗口。

在ctrlone中我打开这样的模态

 var modalInstance = $modal.open({
        templateUrl: 'Modal.html',
        windowClass: 'ModalWidth',
        $scope: function() {
            var scope = $scope;
}(),
controller: "ctrltwo" });

我对ctrltwo的看法是

.controller('ctrltwo', ["$scope", "$modal","itTransport", function ($scope, $modal,transport) {
var test = $scope;
}])

问题是$ scope似乎没有复制过来。有什么建议?

2 个答案:

答案 0 :(得分:1)

您可以像这样传递整个$ scope

var modalInstance = $modal.open({
    templateUrl: 'template.html',
    controller: 'MyModalCtrl',
    scope: $scope
});

但是,如果您实际上不需要整个对象,我建议使用resolve来传递参数。

var modalInstance = $modal.open({
    templateUrl: 'template.html',
    controller: 'MyModalCtrl',
    resolve: {
        variableToPass: function () {
            return $scope.items;
        }
    }
});

然后你就像这样定义你的模态控制器

myApp.controller('MyModalCtrl', ['$scope', $modalInstance'', 'variableToPass', function($scope, $modalInstance, variableToPass) {
    ...
}]);

答案 1 :(得分:0)

此代码:

$scope: function() {
   var scope = $scope;
}()

......相当于:

$scope: undefined

那是因为当一个javascript函数没有return语句时,该函数默认返回undefined。

此外,$modal.open()没有名为$scope的选项。在$modal.open()此处查看Modal section的可用选项说明:

http://angular-ui.github.io/bootstrap/