我有一个使用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似乎没有复制过来。有什么建议?
答案 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
的可用选项说明: