2

我想问如果父范围销毁,子范围也会被销毁吗?

我问这个问题是因为我正在使用 ngdialog 创建一些模式对话框。有2个对话框,A -> B,我们可以从网页打开对话框A,对话框A是对话框B的父级,点击A上的按钮打开B。

我想同时打开对话框B并关闭A(B的父级),并且范围B中的数据都丢失了。所以我认为这可能是由这个引起的。谁能帮助我更好地理解这一点?

对话框ACtrl

$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();
4

2 回答 2

1

我怀疑这与父/子范围无关

对话框的每个实例都将初始化它自己的控制器实例。这意味着当您打开第二个对话框时,它有自己的范围,与第一个对话框中的范围不同。

您需要从一个传递到另一个的任何数据都需要使用 aresolve或通过使用服务在控制器之间共享数据来完成。

如果您的问题中没有发布任何代码,很难进一步提供帮助

于 2015-11-09T13:16:18.153 回答
1

当父作用域被销毁时,它基本上会级联销毁它的子作用域树。

于 2015-11-09T13:03:18.653 回答