正确创建加载模式,但是当finally块被击中时,它不会关闭它。这有什么原因吗?加载时间很短,但我仍然需要有延迟的情况。我正在使用设备和Chrome进行测试 - 只有在Chrome中运行时才会出现此问题。
$scope.init = function() {
var dialog = Modals.openLoadingModal();
OfflineManager.getTemplates().then(function(templates) {
$scope.templates = templates.map(function(e) {
// get e
return e;
});
OfflineManager.getInspections().then(function(inspections) {
$scope.inspections = inspections.map(function(e) {
// get e
return e;
});
}).finally(function() {
dialog.close();
});
});
};
模态视图:
<div class="loadingModal">
<data-spinner data-ng-init="config={color:'#fff', lines:8}" data-config="config"></spinner>
</div>
模态服务:
this.openLoadingModal = function(callback) {
var opts = {
backdrop: true,
backdropClick: false,
keyboard: false,
templateUrl: 'views/modals/loading.html'
};
return this.open(opts, callback, null);
};
this.open = function(opts, closeHandler, dismissHandler, model) {
opts.resolve = { modalModel:function() { return model; }};
opts.controller = opts.controller || 'ModalController';
$('div, input, textarea, select, button').attr('tabindex', -1);
var modalInstance = $modal.open(opts);
modalInstance.result.then(function(result) {
$('div, input, textarea, select, button').removeAttr('tabindex');
if (closeHandler) {
closeHandler(result);
}
}, function(result) {
$('div, input, textarea, select, button').removeAttr('tabindex');
if (dismissHandler) {
dismissHandler(result);
}
});
return modalInstance;
};
答案 0 :(得分:0)
经过一番搜索后,我发现以下解决方案等到模态完成后再执行:
.finally(function() {
dialog.opened.then(function() {
dialog.close();
});
});
答案 1 :(得分:0)
根据ui.bootstrap文档 - http://angular-ui.github.io/bootstrap/versioned-docs/0.13.3/#/modal
结果 - 在模式被关闭时解决的承诺,当模态被解除时被拒绝
看起来你正试图用错误的承诺来执行你的逻辑。 result
作为调用$modalInstance.close
或$modalInstance.dismiss
的产品触发。如果您尝试以编程方式关闭模式(而不是通过模态模板/控制器中的ng-click关闭),则需要直接调用$modalInstance.close
或$modalInstance.dismiss
,然后< / strong>您的result.then
将会执行。