angular
.module('angProj')
.controller('UserCtrl',
['$scope', '$uibModal',
function ($scope, $uibModal) {
$scope.results = function (content, completed) {
var modalInstance = $uibModal.open({
backdrop: 'static',
keyboard: false,
animation: $scope.animationsEnabled,
templateUrl: '/Scripts/angularApp/views/user-modal.html',
controller: 'UserModalCtrl',
resolve: {
items: function () {
return $scope.items;
}
}
});
if (!completed || content.length === 0) {
return;
}
modalInstance.close();
modalInstance.dismiss('cancel');
ユーザー追加の完了時にモデルを閉じることができません。ユーザーモーダルでプログレスバーが表示されます。コードはエラーなしで正常に実行されますが、モーダルは開いたままです。 $ uibModalInstanceも試しましたが、コントローラーがエラーをスローします:不明なプロバイダー(同じUserCtrlに$ uibModalInstanceを挿入できません)ui.bootstrap(ui-bootstrap-tpls-1.1.2.js)を挿入しています
御時間ありがとうございます。
UserModalCtrl
コントローラー内でmodalInstance.close()
を使用します
app.controller('UserModalCtrl', ['$scope', '$modalInstance' function($scope ,modalInstance {
$scope.close = function () {
modalInstance.close();
};
}]);
私は似たようなことをしたと思います。
私はこのような$modal
コントローラーを持っています
angular.module('myApp').controller('infoCtrl', function ($scope, $uibModalInstance, loading) {
$scope.editable = loading;
$scope.$watch('editable.status', function(newValue, oldValue) {
if (newValue == 'success'){
// close modal
$uibModalInstance.close('ok');
} else if (newValue == 'error') {
// show error message
}
});
});
注入されたloading
は次のようなサービスです
myApp.factory('loading', function() {
return {
status: ''
}
});
また、読み込みサービスのステータスを「成功」に変更すると(モーダルコントローラーではなく、どこからでも)モーダルが閉じられます。
これがまさにあなたが求めていたものであるかどうかはわかりませんが、それが役立つことを願っています。また、何か不明な点があるかどうかを尋ねてください。
編集:つまり、値がisCompleted: false
のサービスがあり、そのサービスをモーダルコントローラーに挿入し、$watch
関数を使用するとします。次に、そのisCompleted
がtrue
に変更されたら、モーダルを閉じます。