在Angular UI-Bootstrap中“关闭”模式和“关闭”模式有什么区别?


81

“关闭”模态和“关闭”模态有什么区别?

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

Answers:


89

答案在文档中,在您引用的两行之后:

open方法返回一个模式实例,一个具有以下属性的对象:

  • close(result)-一种可用于关闭模式并传递结果的方法
  • dismiss(reason)-一种可以通过原因来消除模态的方法
  • 结果-当模式关闭时将解决的承诺,而在模式退出时将被拒绝

重要的是诺言发生了什么。最后,诺言得以解决-本质上,触发了“成功”回调。解除后,promise将被拒绝,因此改为运行“ failure”回调。


33
重要的是诺言发生了什么。最后,诺言得以解决-本质上,触发了“成功”回调。解除后,promise将被拒绝,因此改为运行“ failure”回调。
布赖恩

我在这里还有其他问题:从UI角度来看,关闭对话框意味着什么?据我了解,用户可以通过单击“确定”或“取消”(也可以在窗口中使用“ x”)关闭对话框。如何将其从UI中删除?在此先感谢
lm。

1
这意味着您想要的意思。对话框的模板由您决定。您可以在模板中有4个按钮,其中两个按其自身的原因关闭,而两个按其各自的结果关闭。观看位于angular-ui.github.io/bootstrap的演示:OK按钮调用ok(),它本身将关闭带有选定项目的对话框,而cancel按钮调用cancel(),该对话框使用以下命令关闭对话框“取消”是一个原因。
JB Nizet 2014年

1
谢谢,但是我还有另一个问题:解雇的真正含义是什么?就像没有承诺的接近吗?原因是,它的主要目的是什么?用'foo'或'bar'关闭有什么区别?我不知道如何使用此参数...如果有人可以解释...
M'sieur Toph'14-10-12

@ M'sieurToph'传递原因完全取决于您。您可以想象有两个按钮“否,从不”和“以后也许”,它们都关闭了模式,但原因不同,导致结果不同。
JB Nizet 2014年

2

我发现,如果从用户关闭模态(例如返回模态后面的状态并调用state.go('^'))来关闭模态,则最好使用该模态,并使用模态的关闭通过$ state.go或ui-sref更改状态时。

这样,您可以result根据所发生的事情使用诺言做不同的事情。

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

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


1
这很重要,因为当模式被取消时,promise将无法解决,这意味着除非您捕获错误,否则您将收到控制台错误。我不是一个忠实的拥护者,因为解雇通常用于取消,这并不是一个实际的问题。实现catch可以防止引发错误。
杰瑞德·索尔

该答案假定用户使用的是第三方ui-router库,但并非总是如此(问题也不包含该库)。
runderworld '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.