Sự khác biệt giữa “loại bỏ” một phương thức và “đóng” một phương thức trong Angular UI-Bootstrap là gì?


81

Sự khác biệt giữa "loại bỏ" một phương thức và "đóng" một phương thức là gì?

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

Câu trả lời:


89

Câu trả lời có trong tài liệu, ngay sau hai dòng bạn đã trích dẫn:

Phương thức open trả về một thể hiện phương thức, một đối tượng có các thuộc tính sau:

  • close (kết quả) - một phương thức có thể được sử dụng để đóng một phương thức, chuyển một kết quả
  • loại bỏ (lý do) - một phương pháp có thể được sử dụng để loại bỏ một phương thức, chuyển một lý do
  • kết quả - một lời hứa được giải quyết khi phương thức bị đóng và bị từ chối khi phương thức bị loại bỏ

Điều quan trọng ở đây là những gì xảy ra với lời hứa. Khi kết thúc, lời hứa được giải quyết - về cơ bản, lệnh gọi lại "thành công" sẽ kích hoạt. Khi loại bỏ, lời hứa sẽ bị từ chối, do đó, hãy chạy lệnh gọi lại "fail".


33
Điều quan trọng ở đây là những gì xảy ra với lời hứa. Khi kết thúc, lời hứa được giải quyết - về cơ bản, lệnh gọi lại "thành công" sẽ kích hoạt. Khi loại bỏ, lời hứa sẽ bị từ chối, do đó hãy chạy lệnh gọi lại "fail".
Brian

Tôi có thêm câu hỏi ở đây: Từ góc độ giao diện người dùng, điều gì có nghĩa là để loại bỏ hộp thoại? Theo tôi hiểu, người dùng có thể đóng hộp thoại bằng "OK" hoặc bằng "Cancel" (cũng với "x" trên cửa sổ). Làm thế nào nó có thể bị loại bỏ khỏi giao diện người dùng? Cảm ơn trước
lm.

1
Nó có nghĩa là những gì bạn muốn nó có nghĩa là. Mẫu của hộp thoại là tùy thuộc vào bạn. Bạn có thể có 4 nút trong mẫu, hai nút loại bỏ mỗi nút với lý do riêng và hai nút đóng mỗi nút với kết quả riêng. Hãy xem bản trình diễn tại angle-ui.github.io/bootstrap : nút OK gọi ok (), kết quả là nút này tự đóng hộp thoại với một mục đã chọn và nút hủy gọi hủy (), loại bỏ hộp thoại với "hủy bỏ" như một lý do.
JB Nizet

1
Thx, nhưng tôi có một câu hỏi khác về điều đó: ý nghĩa thực sự của việc sa thải là gì? Chỉ như gần mà không có lời hứa? Và lý do, mục đích chính của nó là gì? Sự khác biệt giữa loại bỏ với 'foo' hoặc với 'bar' là gì? Tôi không hiểu làm thế nào để sử dụng tham số này ... Nếu ai đó có thể giải thích ...
M'sieur Toph'

@ M'sieurToph 'Lý do được thông qua là hoàn toàn phụ thuộc vào bạn. Bạn có thể tưởng tượng có hai nút "Không, không bao giờ" và "Có thể sau" cả hai đều đóng phương thức, nhưng với một lý do khác, gây ra một kết quả khác.
JB Nizet

2

Tôi thấy rằng việc loại bỏ một phương thức là tốt nhất nên sử dụng nếu nó là từ người dùng đóng phương thức (ví dụ: quay lại trạng thái đằng sau phương thức và trạng thái đang gọi.go ('^')) và việc đóng phương thức được sử dụng khi thay đổi trạng thái qua $ state.go hoặc ui-sref.

Bằng cách đó, bạn có thể sử dụng resultlời hứa để làm những việc khác nhau, tùy thuộc vào điều gì xảy ra.

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

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


1
Điều này rất quan trọng vì khi một phương thức bị loại bỏ thì lời hứa sẽ không được giải quyết có nghĩa là bạn sẽ gặp lỗi bảng điều khiển trừ khi bạn bắt được lỗi. Tôi không phải là một người hâm mộ lớn vì sa thải thường được sử dụng để hủy bỏ mà không phải là một vấn đề thực tế. Việc thực hiện một lệnh bắt sẽ ngăn lỗi được ném ra.
Jared Sol

Câu trả lời này giả định người dùng đang sử dụng ui-routerlib của bên thứ ba , điều này không phải lúc nào cũng đúng (câu hỏi cũng không bao gồm nó).
runderworld
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.