2017-04-06 54 views
0

我正在使用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(); 
} 

回答

1

另一种方法是让控制器自动知道,形式现在是可见的,但我不知道如何做到这一点。

尝试包装你的代码,你想知道“自动表单现在是可见”与$ timeout

$timeout(function(){ 
    //Your codes goes here 
}); 
+0

点上的控制器 - 你是一个生命的救星!作品款待 –

+0

很高兴帮助你:) – Lados

相关问题