11

コントローラの$スコープスープを避けるためにcontrollerAs構文を使用しています。また、ui.bootstrapを使用してモーダルビューを表示しています。controllerAs構文を使用しているときは、現在のスコープをmodalInstanceに渡します。

現在のコントローラと同じスコープを共有するmodalInstaceを開く必要があります。

var modalInstance = $uibModal.open({ 
     templateUrl: 'addEditModal.html', 
     scope: $scope 
    }); 
しかし

私はスコープを注入し、controllerAs構文を使用していないとして、動作しません。スコープを注入すると、あなたはおそらくのような何かを行うことができます。

私が見つけたことから、解決策を使用してデータを渡す必要がありますが、関数を介して明示的に渡す必要があります。スコープ全体を渡す方法はありますか?

私はそのモーダルでやりたいことがたくさんあり、データの大部分を過度に過ぎているようです。

は、任意のより良いアイデア

var modalInstance = $modal.open({ 
    templateUrl: 'myModalContent.html', 
    controller: 'ModalInstanceCtrl', 
    resolve: { 
    user: function() { 
     return vm.user; 
    }, 
    something: function() { 
     return vm.something; 
    }, 
    blah: function() { 
     return blah; 
    } 
    } 
}); 

...それは厄介なようだとして、これを行うにはしたくないですか?

答えて

14

現在のコントローラと同じスコープを共有するmodalInstaceを開く必要があります。

モーダルサービスcreates inherited scope。そして

var modalInstance = $uibModal.open({ 
    templateUrl: 'addEditModal.html', 
    scope: $scope 
}); 

は、スコープを挿入せず、モーダルコントローラの親スコープを指定します(そうでない場合は、ルートスコープが親として使用されます)。

コントローラコントローラが親コントローラで使用されているため、モーダルコントローラは継承されたvmオブジェクトにアクセスできます。私が正しく理解し、私はそれが... AudioItemAddEditCtrlで、

var modalInstance = $uibModal.open({ 
     templateUrl: 'addEditModal.html', 
     controller: 'AudioItemAddEditCtrl as vm', 
     resolve: { 
     parent: function(){ 
      return vm 
     } 
    } 
    }); 

そして解決パラメータの現在の「controllerAs」を注入/渡すことにより、作業だ場合

+1

この解決策では、$ scopeをコントローラに注入する必要があります。これが私たちが避けようとしていることです。 – Bendim

+0

@Bendim答えで述べたように、スコープを注入するのではなく、モーダルコントローラの親スコープを指定します。これは、あるサービスでは、コントローラの '$ scope'または' scope = $ rootScope。$ new() 'スコープにすることができます。 '$ uibModal'はそのように動作するように設計されています。私たちは誰ですか?同じような問題がある場合は、あなたの特定のケースを反映した質問を投稿してください。 – estus

+1

答えの半分のように思えます。 $ scope.controllerasname.variableとして親スコープ変数にアクセスすることができます – nuander

8

わからない

var AudioItemAddEditCtrl = function(parent, AudioItemService, $ModalInstance) { 
... 
} 

それから、親コントローラスコープに直接アクセスするために「親」を使用することができます。

これは他の人に役立つことを願っています。

関連する問題