如果子范围被销毁,子范围会发生什么

时间:2015-11-09 12:51:18

标签: angularjs angularjs-scope ng-dialog

我想问一下父范围是否会破坏,子范围是否也会被破坏?

我问这个问题是因为我使用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();

2 个答案:

答案 0 :(得分:1)

当父范围被销毁时,它基本上会级联破坏它的子范围树。

答案 1 :(得分:1)

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

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

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

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