我想问一下父范围是否会破坏,子范围是否也会被破坏?
我问这个问题是因为我使用ngdialog创建了一些模态对话框。 有2个对话框,A - > B,我们可以从网页打开对话框A,对话框A是对话框B的父对象,单击A上的按钮打开B。
我想打开对话框B并同时关闭A(B的父级),范围B中的数据全部丢失。所以我想也许是由此造成的。谁能帮助我更好地理解这个?
dialogACtrl :
$scope.selectServer = function (serverType) {
$scope.serverType = serverType;
$scope.closeThisDialog('close'); //close current dialog
var newScope = $scope.$new(true);
var modalInstance;
modalInstance = ngDialog.openConfirm({
template: 'servers/templates/dialog-b.tpl.html',
scope: newScope,
controller: 'dialogBCtrl',
resolve: {
serverData: function () {
return null;
},
delegate: callbackWrapper
}
});
siteScopeModalInstance.result.then(callback);
ngDialog来源:
open: function (opts) {
...
scopes[dialogID] = scope = angular.isObject(options.scope) ? options.scope.$new() : $rootScope.$new();
performCloseDialog: function ($dialog, value) {
...
scope.$destroy();
答案 0 :(得分:1)
当父范围被销毁时,它基本上会级联破坏它的子范围树。
答案 1 :(得分:1)
我怀疑这与父/子范围无关
对话框的每个实例都将初始化它自己的控制器实例。 这意味着当您打开第二个对话框时,它拥有的自己的范围与第一个对话框中的范围不同。
您需要从一个传递到另一个的任何数据都需要使用resolve
或使用服务在控制器之间共享数据。
在您的问题中没有发布任何代码,很难提供进一步的帮助