如何强制在AngularJS一个uibModal对话框重新渲染
问题描述:
我正在使用AngularJS,如下uibModal框架:如何强制在AngularJS一个uibModal对话框重新渲染
vm.openTotalScore =() => {
$uibModal.open({
templateUrl: 'app/modules/scoreforms/cost/scoreform.html',
scope: $scope,
controller: 'CostScoreFormController',
controllerAs: 'vm',
backdrop: 'static',
resolve: {
rankingSettings: function() {
return vm.rankingdata;
},
score: function() {
return vm.risk.TotalScore;
},
costScoringData: function(ScoreFormService){
var fields = vm.risktitle.split(' ');
return ScoreFormService.getCostScoringData(vm.state.params.riskId, vm.impacttypename, fields[0]);
},
currencysymbol: function() {
return vm.currencysymbol;
}
}
}).opened.then(function(success){
});
}
,并打开模式窗体时,我需要能够触发重新渲染模态窗体上的图形元素。我正在使用DevExpress DevExtreme控件,并且在刷新/调整页面大小之前,其中一个控件无法正确绘制。他们告诉我,一旦形式可见,我需要对其进行控制。但是,我不确定如何从打开表单的控制器执行此操作。
我能想到做到这一点的唯一方法是,以某种方式告诉控制器表单现在已打开并且表单可以重新呈现。
另一种方法是让控制器自动知道窗体现在可见,但我不知道如何做到这一点。
我将uibModalInstance传入控制器,如下所示,因此我可以在那里处理已打开的promise吗?
constructor($state, $scope, $translate, $stateParams, $filter, $uibModalInstance, logger, rankingSettings, score, costScoringData, currencysymbol) { //, score)
{
'ngInject';
var vm = this;
vm.logger = logger;
vm.state = $state;
vm.translate = $translate;
vm.logger = logger;
vm.submitted = false;
vm.modelInstance = $uibModalInstance;
vm.costScoringData = costScoringData;
vm.rankingSettings = rankingSettings;
vm.score = score;
vm.currencysymbol = currencysymbol;
vm.cancel = function() {
vm.modelInstance.close();
};
this.getOptions();
this.loadGridData();
this.showDevExtremeGrid();
}
答
另一种方法是让控制器自动知道,形式现在是可见的,但我不知道如何做到这一点。
尝试包装你的代码,你想知道“自动表单现在是可见”与$ timeout
$timeout(function(){
//Your codes goes here
});
点上的控制器 - 你是一个生命的救星!作品款待 –
很高兴帮助你:) – Lados