2017-04-06 58 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

相關問題