2013-05-01 2 views
1

Я пытаюсь закрыть и открыть диалоговое окно из представления фактического диалогового контроллера. Что происходит, так это то, что после закрытия диалога/открытия он не будет правильно закрываться снова. Escape работает в некоторых браузерах (но наложение остается), и щелчок по фону может привести к закрытию диалогового окна, но наложение останется (зависит от браузера).Угловой интерфейс диалогового окна - закрытие и повторное открытие из диалогового окна вызывает фон

Вопрос: Как закрыть/открыть диалоговое окно из функции/кнопки/события на контроллере диалога и закрыть диалоговое окно (при бегстве или щелчке фона).

Демонстрация ниже - это просто сложенный образец, который демонстрирует проблему, поскольку я буду делать следующий/prev, и я хотел бы закрыть/открыть эти клики, но у меня есть эта проблема, поскольку вы не можете выйти из нее покадрово.

Вот онлайн демо: http://plnkr.co/h8djNiSlH6c7d8SNzMmb

  1. Открыть диалог
  2. Закрыть диалог - работает отлично, за исключением IE (другой вопрос).
  3. Открыть диалоговое
  4. Нажмите кнопку в диалоговом окне, чтобы закрыть/открыть заново
  5. Try, чтобы закрыть диалоговые

Контроллеры:

function PopupCtrl($scope, $dialog, dialog, item, Utils) { 

    $scope.items = Utils.getItems(); 
    $scope.item = item; 
    $scope.reOpen = function (item) { 
     item = $scope.items[1]; 
     dialog.close(); 
     var d = $dialog.dialog({ 
      dialogFade: true, 
      backdropClick: true, 
      dialogOpenClass: 'modal-open', 
      resolve: { 
       item: function() { 
        return angular.copy(item) 
       } 
      } 
     }); 
     d.open('dialog.html', 'PopupCtrl'); 
    }; 
} 

function MainCtrl($scope, $window, $dialog, $location, $timeout, Utils) { 
    $scope.items = Utils.getItems(); 

    $scope.openDialog = function (item) { 
     item = $scope.items[0]; 
     var d = $dialog.dialog({ 
      dialogFade: true, 
      dialogOpenClass: 'modal-open', 
      resolve: { 
       item: function() { 
        return angular.copy(item) 
       } 
      } 
     }); 
     d.open('dialog.html', 'PopupCtrl'); 

    }; 

} 

Я попытался это с угловым бутстраповской v0.2.0 и v.0.3.0, так что это либо ошибка, либо что-то мне не хватает в отношении того, как я кодирую логику.

+0

Вот некоторые дикие вещи. Я предположил, что существует какой-то конфликт по объему (например, PopupCtrl выходит из области видимости в dialog.close()), поэтому я попытался переместить открытый код диалога в службу и вызвать его после setTimeout, но когда я это делаю, никакого нового диалога никогда открывается, как будто $ dialog внутри PopupCtrl испорчен каким-то образом после его закрытия. – Langdon

+0

Да, я просто не мог понять это. Анимации отлично смотрятся на хроме и т. Д., Но не так много в FF, но это только в сторону – lucuma

+0

. Я закончил тем, что подал заявку и вытащил запрос на проект. – lucuma

ответ

Смежные вопросы