Javascript $uibModal DISCLISE问题。then不是函数
我正在从angular 1.6.9迁移到angular 1.7.9,当我完成所有工作并检查功能是否仍在工作时,我发现调用函数时出现了一个问题,当我在$uibModal中按下accept按钮时,应该调用该函数。我得到的错误是: TypeError:utils.OpenModel(…)。then不是函数 我已经寻找了一些可能的解决方案,并对它们进行了测试,我实现了不出错,但功能仍然没有实现。我把我的代码贴在这里,想知道是否有人能告诉我发生了什么 我有一个开放模式 utils.service.js 然后我有一个组件: modal.component.js 此外,模式模板具有此页脚和按钮: modal.htmlJavascript $uibModal DISCLISE问题。then不是函数,javascript,angularjs,angular-ui-bootstrap,Javascript,Angularjs,Angular Ui Bootstrap,我正在从angular 1.6.9迁移到angular 1.7.9,当我完成所有工作并检查功能是否仍在工作时,我发现调用函数时出现了一个问题,当我在$uibModal中按下accept按钮时,应该调用该函数。我得到的错误是: TypeError:utils.OpenModel(…)。then不是函数 我已经寻找了一些可能的解决方案,并对它们进行了测试,我实现了不出错,但功能仍然没有实现。我把我的代码贴在这里,想知道是否有人能告诉我发生了什么 我有一个开放模式 utils.service.js 然
{{'SHARED.MOD|u ACCEPT'| translate | uppercase}}
{{'SHARED.MOD_CANCEL'| translate | uppercase}}
非常感谢您花时间处理这个问题。我仍在寻找解决方案。如果API已返回承诺,则无需使用
$q.defer
制作承诺:
function openModal( body ) {
var msg = typeof body === "string" ? body : body.message;
var animation = body.animation === false ? false : true;
var keyboard = body.keyboard === false ? false : true;
var bodyTemplate = body.bodyTemplate ?
"app/components/modal/" + body.bodyTemplate + ".html" :
undefined;
̶v̶a̶r̶ ̶d̶e̶f̶e̶r̶r̶e̶d̶ ̶=̶ ̶$̶q̶.̶d̶e̶f̶e̶r̶(̶)̶;̶
//...
var modalInstance = $uibModal
.open( {
//...
} );
//RETURN the promise
return modalInstance.result;
/* DELETE this
modalInstance.result.then(
function () {
return deferred.resolve();
},
function () {
return deferred.reject();
}
);
return deferred;
*/
}
( function () {
angular
.module( 'app' )
.component( 'modal', {
templateUrl: 'app/components/modal/modal.html',
controller: modalController,
controllerAs: 'vm',
bindings: {
resolve: '<',
close: '&',
dismiss: '&'
}
} );
modalController.$inject = [ '$translate' ];
/** @ngInject */
function modalController( $translate) {
var vm = this;
$translate.use( sessionStorage.getItem( 'lang' ) );
vm.$onInit = function () {
var res = vm.resolve;
vm.title = res.title || 'SHARED.MODAL_TITLE_DEFAULT';
vm.subtitle = res.subtitle;
vm.hideCross = res.hideCross;
vm.showCancel = res.showCancel;
vm.cancelBtn = res.cancelBtn;
vm.backdrop = res.backdrop;
vm.innerTemplate = res.innerTemplate;
vm.bodyTemplate = res.bodyTemplate;
vm.hideCross = true;
vm.block = res.consent;
}
}
} )();
function openRevokeConsentModal(ev, blockToRemove, appClientId, appIndex, blockIndex) {
var parentElement = document.getElementById('permisos-tab');
var parentAngularElement = angular.element(parentElement);
$translate(['FEATURES.APPROVED.CANCEL_PERMIT']).then(function(translations) {
var body = {
title: translations['FEATURES.APPROVED.CANCEL_PERMIT'],
bodyTemplate: 'modalRevokeConsent',
appendTo: parentAngularElement,
consent: blockToRemove,
showCancelBtn: true
};
utils.openModal(body).then( // Here I get the problem so I cant call the revokeConsent method.
function() {
var removeInfo = {
appInfo: {
clientId: appClientId,
appIndex: appIndex,
blockIndex: blockIndex
},
block: blockToRemove
};
//Unfocus the button
if (ev.explicitOriginalTarget) {
ev.explicitOriginalTarget.blur();
} else if (ev.srcElement) {
ev.srcElement.blur();
}
revokeConsent(removeInfo);
},
function() {
//Unfocus the button
if (ev.explicitOriginalTarget) {
ev.explicitOriginalTarget.blur();
} else if (ev.srcElement) {
ev.srcElement.blur();
}
}
);
});
utils.setModalPositions(200);
}
<div class="modal-footer center">
<div class="footer-container">
<div class="btn btn-default" ng-click="vm.close()" ng-class="{'pull-right btn-ok' : vm.cancelBtn, 'btn-cancel' : !vm.cancelBtn }">
{{'SHARED.MOD_ACCEPT' | translate | uppercase }}
</div>
<div class="btn btn-default pull-left btn-cancel" ng-if="vm.cancelBtn" ng-click="vm.dismiss()">
{{'SHARED.MOD_CANCEL' | translate | uppercase }}
</div>
</div>
</div>
function openModal( body ) {
var msg = typeof body === "string" ? body : body.message;
var animation = body.animation === false ? false : true;
var keyboard = body.keyboard === false ? false : true;
var bodyTemplate = body.bodyTemplate ?
"app/components/modal/" + body.bodyTemplate + ".html" :
undefined;
̶v̶a̶r̶ ̶d̶e̶f̶e̶r̶r̶e̶d̶ ̶=̶ ̶$̶q̶.̶d̶e̶f̶e̶r̶(̶)̶;̶
//...
var modalInstance = $uibModal
.open( {
//...
} );
//RETURN the promise
return modalInstance.result;
/* DELETE this
modalInstance.result.then(
function () {
return deferred.resolve();
},
function () {
return deferred.reject();
}
);
return deferred;
*/
}