2

親スコープが破棄されるかどうかを確認したいのですが、子スコープも破棄されますか?

この質問をするのは、いくつかのモーダル ダイアログを作成するために ngdialog を使用しているためです。A -> B の 2 つのダイアログがあり、Web ページからダイアログ 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();
4

2 に答える 2

1

親スコープが破棄されると、基本的にその子スコープ ツリーをカスケード破棄します。

于 2015-11-09T13:03:18.653 に答える
1

これは親/子スコープとは何の関係もないと思われます

ダイアログの各インスタンスは、独自のコントローラー インスタンスを初期化します。これは、2 番目のダイアログを開くと、最初のダイアログのスコープとは異なる独自のスコープを持つことを意味します。

あるデータから別のデータに渡す必要があるデータは、resolveを使用するか、サービスを使用してコントローラー間でデータを共有する必要があります。

あなたの質問にコードが投稿されていないと、さらに支援することは困難です

于 2015-11-09T13:16:18.153 に答える