Яка різниця між "відхилити" модальний та "закрити" модальний у Angular UI-Bootstrap?


83

Яка різниця між "звільнити" модальний та "закрити" модальний?

close(result) - a method that can be used to close a modal, passing a result
dismiss(reason) - a method that can be used to dismiss a modal, passing a reason

Відповіді:


91

Відповідь - у документації, одразу після двох цитованих рядків:

Метод open повертає модальний екземпляр, об’єкт із такими властивостями:

  • close (результат) - метод, який можна використовувати для закриття модального, передаючи результат
  • звільнення (причина) - метод, за допомогою якого можна звільнити модаль, передавши причину
  • результат - обіцянка, яка вирішується, коли модаль закривається, а відхиляється, коли модаль звільняється

Тут важливим є те, що відбувається з обіцянкою. Зблизька обіцянка вирішена - по суті, спрацьовує зворотний виклик "успіху". При звільненні обіцянка відхиляється, тому замість цього виконується зворотний виклик "відмова".


33
Тут важливим є те, що відбувається з обіцянкою. Зблизька обіцянка вирішена - по суті, спрацьовує зворотний виклик "успіху". При звільненні обіцянка відхиляється, тому замість цього виконується зворотний виклик "відмова".
Брайан

У мене тут є додаткове запитання: Що стосується інтерфейсу користувача, що означає закрити діалогове вікно? Як я розумію, діалогове вікно може бути закрите користувачем або "ОК", або "Скасувати" (також "Х" у вікні). Як його можна відхилити від інтерфейсу користувача? Заздалегідь дякую
лм.

1
Це означає, що ви хочете, щоб це означало. Шаблон діалогового вікна залежить від вас. У шаблоні може бути 4 кнопки, дві з яких відхиляють кожну зі своєї причини, а дві закривають кожну зі своїм результатом. Подивіться на демонстраційну версію на адресу angular-ui.github.io/bootstrap : кнопка OK викликає ok (), яка сама закриває діалогове вікно з вибраним елементом, а кнопка скасування викликає cancel (), що відхиляє діалогове вікно з "скасувати" як причину.
JB Nizet

1
Thx, але я маю ще одне питання з цього приводу: у чому справжній сенс звільнення? Це так само, як близько без обіцянки? І причина, в чому його основна мета? Яка різниця між звільненням за допомогою "foo" чи "bar"? Я не розумію, як використовувати цей параметр ... Якщо хтось може пояснити ...
M'Sieur Toph '12

1
@JBNizet: ти маєш рацію, але я це зрозумів. Дурна помилка, яка раз у раз кусає мене за зад, і це забуває встановити тип кнопки button. : P
im1dermike

2

Я виявив, що відмову від модалу найкраще використовувати, якщо це від користувача, який закриває модаль (наприклад, повертається у стан за модалом і викликає state.go ('^')), і використовується закриття модалу при зміні стану через $ state.go або ui-sref.

Таким чином ви можете використовувати resultобіцянку робити різні речі, залежно від того, що станеться.

result.then(function() { /* state change via ui-sref */ })

result.catch(function() { /* user closed modal */ })


1
Це важливо, тому що коли модаль відхиляється, тоді обіцянка не вирішується, тобто ви отримаєте помилку консолі, якщо не виявите помилку. Я не великий шанувальник, оскільки звільнення часто використовується для скасування, що не є фактичною проблемою. Реалізація catch запобігає виникненню помилки.
Джаред Сол

Ця відповідь передбачає, що користувач використовує сторонню ui-routerбібліотеку, що не завжди так (і питання не включає її).
runderworld
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.