2015-10-05 13 views
5

ここでは問題がありますが、私は親コントローラと子コントローラを持っているようですが、親コントローラにはメソッドがあります私は子供のモーダルコントローラから電話したい、私は何が欠けているのかわからないが、私は何を試したのか知っている。子モダルコントローラ(uiブートストラップ)から親コントローラメソッドを呼び出す

App.controller('MailFolderController', ['$scope', '$http', '$timeout', '$stateParams', '$window', 'mails', '$interval', function ($scope, $http, $timeout, $stateParams, $window, mails, $interval) { 


$scope.check = function(){ 
    console.log("call parent ==========>") 
} 


    App.controller('orderCancellationController', ['$scope', '$modal', function ($scope, $modal) { 

    $scope.open = function (mail) { 
     var modalInstance = $modal.open({ 
      templateUrl: '/orderCancellationBox.html', 
      controller: ModalInstanceCtrl, 
      resolve: { 
       mail: function() { 
        return mail; 
       } 
      } 
     }); 
    }; 

    // Please note that $modalInstance represents a modal window (instance) dependency. 
    // It is not the same as the $modal service used above. 

    var ModalInstanceCtrl = function ($scope, $modalInstance, mail) { 

     $scope.mail = mail; 
     $scope.submit = function() { 
      $scope.$parent.check(); 
      $modalInstance.close('closed'); 
     }; 

     $scope.cancel = function() { 
      $modalInstance.dismiss('cancel'); 
     }; 
    }; 
    ModalInstanceCtrl.$inject = ["$scope", "$modalInstance", 'mail']; 

}]); 


}]); 

が、それは私にエラーがないような機能を提供します、私はモーダルインスタンスコントローラから、このチェックメソッドを呼び出したい、チェック方法でエラーを取得M、しかし行うことができない、助けてください。 (実際には$モーダルサービスは、子スコープを作成しようとしているモーダルのコンテンツに使用されるスコープのインスタンス - ブートストラップで

+0

は、追加しようとする「コントローラ:ModalInstanceCtrl」 – klskl

+0

イム申し訳ありませんが、あなたを得るdidntは、あなたは少し –

+0

を例に下回る – klskl

答えて

11

https://angular-ui.github.io/bootstrap/#/modal

モーダルは、「範囲」オプション、

スコープを持っています提供された範囲の)。 scope: $scopeを使用して$ rootScope

デフォルトは、あなたの親コントローラで定義されたメソッドを使用できるようにする必要があり

例:

$scope.open = function (mail) { 
    var modalInstance = $modal.open({ 
     templateUrl: '/orderCancellationBox.html', 
     controller: ModalInstanceCtrl, 
     scope: $scope, 
     resolve: { 
      mail: function() { 
       return mail; 
      } 
     } 
    }); 
}; 
+0

おかげでたくさんの仲間 –

+0

NPを私の答えを更新し説明してくださいすることができ、私は(メールの場合と同じように)メソッドを解決することもできると思いますが、自分で試したことはありません – klskl

+0

実際に '$ parent'を使わないで関数を呼び出すのがプロトタイプの継承なのはなぜですか? – Anatoly

1

解決の$ $モーダル内のスコープと単純に$のscope.parent呼び出します。チェックして、あなたは完了です!あなたの下で:「$スコープスコープ」を

関連する問題