2

ローディング モーダルは正しく作成されますが、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;
};
4

2 に答える 2

0

ui.bootstrap ドキュメントによる - http://angular-ui.github.io/bootstrap/versioned-docs/0.13.3/#/modal

result - モーダルが閉じられたときに解決され、モーダルが閉じられたときに拒否される promise

間違ったプロミスを使用してロジックを実行しようとしているようです。 またはresultを呼び出した結果としてトリガーされます。プログラムでモーダルを閉じようとしている場合 (モーダル テンプレート/コントローラー内で ng-click を介して閉じるのではなく) 、または直接呼び出す必要があります。その後、実行されます。$modalInstance.close$modalInstance.dismiss$modalInstance.close$modalInstance.dismissresult.then

于 2015-12-10T16:35:30.643 に答える