ngDialog закрывает все активные модалы

0

У меня проблема с ngDialog (https://github.com/likeastore/ngDialog), у меня открыто 1 диалоговое окно, и когда пользователь нажимает кнопку, он выдает еще один модальный сверху в качестве предупреждения. Я хочу закрыть диалоговое окно с предупреждением с помощью кнопки, но когда я использую ngDialog.close(), он закрывает все активные модалы.

Я понимаю, что в документах указано, что если вы не передаете идентификатор, он действует как closeAll(), поэтому мне нужно указать ему id. Поэтому, когда я использую ngDialog.open(), я даю ему идентификатор предупреждения, а затем я использую ngDialog.close("alert"), однако это все еще закрывает все модальности....

Я создал плункер, чтобы попытаться показать, что я делаю, и он действует так же... http://plnkr.co/0bg1VB7QuEZxIdakfoBr

scope.closeThisDialog = function() {
  ngDialog.close("secondDialog");
};

Если вы проверяете источник, он также показывает, что идентификатор тоже не отображается. Я подозреваю, что поэтому оба модала закрываются.

Может ли кто-нибудь пролить свет на то, что я делаю неправильно.

Теги:
ng-dialog

2 ответа

0

Я обошел, не имея возможности получить идентификатор диалогов, передав его, хотя область действия и наложение моей директивы

scope.openProfileDialog = function() {
  var profileDialogScope = scope.$new();
  profileDialogScope.customerNumber = scope.customerNumber;

  var profileDialog = ngDialog.open({
      plain: true,
      template: "<profile-dialog customer-number='{{ customerNumber }}' dialog-id='{{dialogId}}'></profile-dialog>",
      closeByDocument : false,
      name: "profileDialog",
      scope: profileDialogScope,
      id: "profileDialog"
  });

  profileDialogScope.dialogId = profileDialog.id;
};

Затем в директиве profile-dialog у меня есть

scope: {
  customerNumber : "@",
  dialogId: "@"
},

и это находится в разделе ссылок

scope.finish = function() {
  ngDialog.close(scope.dialogId);
};
0

Вы не должны перезаписывать метод closeThisDialog. В документации указано, что метод.closeThisDialog (значение) получает инъекцию в переданную $ scope. ", Так как ваша директива имеет свою собственную команду scople, вы должны иметь возможность найти введенный метод из родительской области. Поэтому ваш метод следует изменить так, как показано ниже.

scope.closeThisDialog = function() {
    //ngDialog.close("secondDialog");
    scope.$parent.closeThisDialog();
  };

http://plnkr.co/edit/t7xVrsGfq7YtWxbGbwn6?p=preview

  • 0
    Я не собирался перезаписывать метод closeThisDialog, это был просто мой неправильный метод именования, я изменил его до конца. Идея, лежащая в основе моего кода, заключается в том, что все директивы самодостаточны, поэтому использование $ parent ломает это, заставляя мою директиву знать своего родителя.
  • 0
    для меня диалог должен быть в определенном контексте, поэтому он не является самодостаточным. или вы можете сделать, если (scope.closeThisDialog) scope.closeThisDialog (); else scope. $ parent.closeThisDialog ();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню