UI Bootstrap modal。
1つのコントローラーにこれがあります:
app.controller("tableCtrl",['$scope','$http','$uibModal','$log' ,function ($scope, $http,$uibModal,$log) {
$scope.open = function (size,selectedUser) {
var modalInstance = $uibModal.open({
animation: $scope.animationsEnabled,
templateUrl: 'myModalContent.html',
controller:'ModalInstanceCtrl',
size: size,
resolve: {
user: function () {
return selectedUser;
}
}
});
}]);
別の私はこれを持っています:
app.controller('ModalInstanceCtrl',['$scope','$uibModalInstance','user', function ($scope, $uibModalInstance, user) {
$scope.user = user;
$scope.ok = function () {
$uibModalInstance.close();
};
}]);
myModalContent
は次のようになります。
<script type="text/ng-template" id="myModalContent.html">
<div class="modal-header"><h1>EDIT</h1></div>
<div class="modal-body">
{{patient.patient_id}}
</div>
<div class="modal-footer">
<button class="btn btn-primary" type="button" ng-click="ok()">OK</button>
</div>
</script>
HTMLでtableCtrl
を呼び出し、次のようにopen
関数を呼び出します。
<button class="btn btn-primary" ng-click="open('lg',patient)">Edit</button>
編集ボタンをクリックすると、次の例外が表示されます。
Unknown provider: $uibModalInstanceProvider <- $uibModalInstance
this plunker を見ましたが、助けにはなりませんでした。
なにが問題ですか?
私は同じ問題を抱えていたので、私のソリューションからあなたのシナリオを解決する方法は次のとおりです
app.controller("tableCtrl",['$scope','$http','$uibModal','$log' ,function ($scope, $http,$uibModal,$log) {
$scope.open = function (size,selectedUser) {
var uibModalInstance = $uibModal.open({
animation: $scope.animationsEnabled,
templateUrl: 'myModalContent.html',
controller:function($uibModalInstance ,$scope,user){
$scope.ok = function () {
$uibModalInstance.dismiss('cancel');
};
},
size: size,
resolve: {
user: function () {
return selectedUser;
}
}
});
}]);
特定された問題は次のとおりです。コントロールがHTMLページから再初期化されました。 Modalコントローラーが1か所から初期化されていることを確認してください
私はまったく同じ問題を抱えていました。 angularとui-bootstapライブラリの両方を更新すると、問題が修正されました。 bowerを使用してui-bootstrapを更新します。それは、それと連携しているangularのバージョンを提案します。お役に立てば幸いです。
Angle-ui/bootstrapの異なるバージョンには、異なる注入変数名があります。
angular-ui/bootstrapの例 をご覧ください
インライン、およびuibModalInstanceオブジェクト定義内にコントローラー機能があるため、同じ問題が発生していました。
0.14.3にアップグレードした後、javascriptがu化されたとき、uibModalInstanceは不明なプロバイダーをスローしていました。 「app.controller」を使用してコントローラーを定義すると、問題が修正されました。
この問題は、modal.open呼び出しではなくテンプレートHTMLでコントローラーを定義したときに発生することがわかりました。